현재 Interop 개체를 사용하여 Excel 스프레드 시트에 쓰고 있습니다. 스톱워치를 사용하여, 나는 다음과 같은 이행이시기 적절하다는 것을 발견했다. foreach
루프의 프로세스는 보통 각각 약 9 개의 열로 약 2000 개의 행을 작성하는 데 약 50 초가 걸립니다.Excel 시트에 쓰기 속도 향상 방법
속도를 향상시킬 방법이 있습니까?
List<string[]> allEntries = fillStringArrayList();
// Set-up for running Excel
xls = new Excel.Application();
workBooks = xls.Workbooks;
workBook = workBooks.Open(workbookPath);
var workSheet = workBook.Sheets["Sheet1"];
// Insert new entries
foreach (string[] entry in allEntries)
{
// Get the final row in the sheet that is being used
Excel.Range usedRange = workSheet.UsedRange;
int rowCount = usedRange.Rows.Count;
// Format Column A to be type "text"
workSheet.Cells[rowCount + 1, 1].NumberFormat = "@";
workSheet.Cells[rowCount + 1, 1] = entry[0];
workSheet.Cells[rowCount + 1, 2] = entry[1];
workSheet.Cells[rowCount + 1, 3] = entry[2];
workSheet.Cells[rowCount + 1, 4] = entry[3];
workSheet.Cells[rowCount + 1, 5] = entry[4];
workSheet.Cells[rowCount + 1, 6] = entry[5];
workSheet.Cells[rowCount + 1, 7] = entry[6];
workSheet.Cells[rowCount + 1, 8] = entry[7];
workSheet.Cells[rowCount + 1, 9] = entry[8];
}
Check CopyFromRecordset. 참고 https://support.microsoft.com/en-us/kb/246335 – Fionnuala
'스톱워치 사용 => 및 최적화 모드가 해제 된 모드? –
@ThomasAyoub 예 & 예. – Queue