Derzeit schreibe ich ungefähr 200 Excel-Tabellen mit Excel 2007 mit C # COM Interop.
Leider brauche ich etwa 4 Minuten, um diese 200 Blätter zu schreiben - jedes Blatt hat etwa 1000 Zeilen mit 8-10 Spalten.
Wie kann ich Dinge beschleunigen?
Mein Code sieht im Grunde so aus:
var xlApp = new Excel.Application();
xlApp.DisplayAlerts=false;
foreach (x in z) {
var wb = xlApp.Workbooks.add(XLWBATemplae.xlWBATWorksheet);
var ws = (Worksheet)wb.Worksheets[1];
//fill data into sheet
wb.SaveAs(fileName);
wbClose();
}
Klarstellung: Ich fülle gerade jede Zelle einzeln auf
Ich werde einige Vorschläge von Ihnen ausprobieren und akzeptiere dann die beste Lösung.
Antworten:
5 für die Antwort № 1Sie können COM Interop mit EPPlus vollständig loswerden (Hier). Diese Bibliothek erstellt Excel-Dateien mit dem XML-Format von 2007 und nicht mit der Excel-COM-Schnittstelle. Dies ist viel schneller.
4 für die Antwort № 2
Sie können dies beschleunigen, indem Sie die 1000 Zeilen bearbeitenmit 8 bis 10 Spalten als Array und kopieren Sie Ihre Daten auf einmal in dieses Array, anstatt jede dieser 8000 bis 10000 Zellen einzeln zu füllen. Weitere Informationen finden Sie hier: Array in den Excel-Bereich schreiben
0 für die Antwort № 3
Ich würde dazu keine Excel-App verwenden, sondern direkt aus c # mithilfe einer Bibliothek schreiben: Excel-Datei (.XLS und .XLSX) aus C # erstellen
Viel schneller.
Rgds GJ
0 für die Antwort № 4
Manchmal reicht es aus, Ihre Dateien als Textdatei zu speichern CSV Format. Es kann wie eine normale Excel-Tabelle von Excel geöffnet werden.
0 für die Antwort № 5
Haben Sie sich überlegt, C # -Tools wie NPOI.
Es funktioniert sehr gut und erfordert nicht die Verwendung von COM Interop.
Scott Mitchell hat darüber geschrieben vor kurzem.