現在、Excelスプレッドシートに書き込むためにInteropオブジェクトを使用しています。ストップウォッチを使用して、私は次の実装が非常にタイムリーであることを発見しました。 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];
}
「CopyFromRecordset」を確認します。注意https://support.microsoft.com/en-us/kb/246335 – Fionnuala
'stopwatches'を使う=>最適化を有効にしたモードを解除しますか? –
@ThomasAyoubはい&はい。 – Queue