Ich verwende derzeit Interop-Objekte, um in eine Excel-Tabelle zu schreiben. Mit Stoppuhren habe ich festgestellt, dass die folgende Implementierung ziemlich aktuell ist. Die Prozesse in der foreach
-Schleife benötigen normalerweise ungefähr 50 Sekunden, um ungefähr 2000 Zeilen mit jeweils 9 Spalten zu schreiben.So beschleunigen Sie das Schreiben in eine Excel-Tabelle
Gibt es eine Möglichkeit, dies zu beschleunigen?
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];
}
Überprüfen Sie CopyFromRecordset. Hinweise https://support.microsoft.com/en-us/kb/246335 – Fionnuala
'Stoppuhren verwenden = = und Freigabe-Modus mit Optimierung aktiviert? –
@ThomasAyoub Ja und ja. – Queue