/ / Wie kann ich die Erstellung von Excel-Excel-Kalkulationstabellen aus C # beschleunigen? - c #, performance, excel, com-interop

Wie kann ich die Erstellung von Excel-Excel-Tabellen aus C # beschleunigen? - c #, Leistung, Excel, Com-Interop

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 № 1

Sie 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.