현재 Ms - Word Labeling 기능을 사용하는 .net 데스크톱 응용 프로그램에서 작업하고 있습니다. 한 번에 약 5000 개의 레코드를 인쇄해야합니다. 내 코드에 따르면 약 3.5 분이 걸립니다. 여기, 내 코드에서 약간의 더미 데이터를 전달하지만 실제 시나리오에서는 큰 데이터를 전달해야합니다.Ms-Word 레이블링을 통한 C# .net 최적화 문제
내 코드는 다음과 같습니다
oWord = new Word.Application();
oWord.Visible = false;
object missing = System.Reflection.Missing.Value;
object isVisible = false;
object filename = @"C:\Users\jc\Desktop\label1.docx";
object saveFile;
oDoc = oWord.Documents.Open(ref filename, ConfirmConversions: false, ReadOnly: true);
var innerTable = oDoc.Content.Tables[1];
int totalLabelsPerPage = innerTable.Rows.Count * innerTable.Columns.Count;
int totalRowsPerPage = innerTable.Rows.Count;
int totalColumnsPerPage = innerTable.Columns.Count;
String[] collection = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63" };
object StartPoint = 0;
Range MyRange;
int requiredTables = 1;
while ((requiredTables * totalRowsPerPage * totalColumnsPerPage) < collection.Length)
{
MyRange = oDoc.Range(ref StartPoint, ref missing);
MyRange.Collapse(Microsoft.Office.Interop.Word.WdCollapseDirection.wdCollapseEnd);
MyRange.InsertBreak(Microsoft.Office.Interop.Word.WdBreakType.wdSectionBreakNextPage);
MyRange.InsertFile(@"C:\Users\jc\Desktop\label.docx");
requiredTables++;
}
int count = oDoc.Content.Tables.Count;
int no = 1;
int columnCount = innerTable.Columns.Count;
int currentColumn = 1;
int cont = 0;
int columns = 1;
int currentTableNo = 1;
while (cont <= collection.Length)
{
innerTable = oDoc.Content.Tables[currentTableNo];
innerTable.Range.Bold = 1;
innerTable.Range.Bold = 1;
innerTable.Range.Text = "sdadad";
innerTable.Range.Font.Bold = 1;
innerTable.Range.Font.Color = Word.WdColor.wdColorBlue;
innerTable.Range.Font.Size = 15F;
innerTable.Range.Font.Name = "Verdana";
while (columns <= columnCount)
{
innerTable.Columns[columns].Cells[no].Range.Text = collection[cont];
no++;
cont++;
if (cont == collection.Length)
break;
else if (no == totalRowsPerPage+1)
{
columns++;
no=1;
}
}
if (cont == collection.Length)
break;
else
{
columns = 1;
currentTableNo++;
}
}
this.Cursor = Cursors.Default;
oWord.Visible = true;
oDoc.Activate();
어떤 도움을 크게 appriciated 수 있습니다 .. !!
감사합니다.
유일한 문제는 효율성 (시간 소요)입니까? –
@ 카즈 쟈 : 예. 유일한 문제는 시간입니다 ... –