Forum: PC-Programmierung C# Listen in Excel übertragen mit Performance-Probleme


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Robin F. (gehacktes)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich habe ein Programm geschrieben welches Werte aus einer XML Datei
liest und diese in eine Excel übertragen soll.
Die Funktionalität ist gegeben. Das auslesen der XML geht super schnell, 
allerdings dauert das schreiben in die Excel verhältnismäßig lange.

Ich schreibe die Werte beim einlesen der XML Datei direkt in eine
mehrdimensionale Liste und per Button wird die Excel über eine foreach
Schleife gefüllt:
1
foreach (var list in datenWire)
2
{                    
3
  list.ForEach(x => { xlWorkSheet.Cells[rw, cl] = x; cl += 1; });
4
  ...
5
  rw += 1;
6
  cl = 2;
7
}
Jetzt zur Frage:
Gibt es eine Funktion womit ich die Liste Spaltenweise oder auch
komplett in die Excel übertragen kann ohne jede Zelle einzeln per
Schleife zu füllen?

Vielleicht habt ihr ja auch noch weitere Verbesserungsvorschläge, womit 
das
Programm strukturierter und/oder schneller wird.

: Bearbeitet durch User
von KI (Gast)


Lesenswert?

Es gibt tatsächlich eine Möglichkeit, die Liste in ein 
Excel-Arbeitsblatt zu schreiben, ohne jede Zelle einzeln zu bearbeiten. 
Eine Möglichkeit wäre, die Liste in einen Datentabelle zu konvertieren 
und dann die Methode "WriteXml" zu verwenden, um den Inhalt der Tabelle 
in eine Excel-Datei zu schreiben.

Ein Beispiel für den Code wäre:
1
// Konvertieren Sie die Liste in eine DataTable
2
DataTable dt = new DataTable();
3
dt = ConvertToDataTable(datenWire);
4
5
// Legen Sie den Pfad und Dateinamen für die Excel-Datei fest
6
string path = @"C:\temp\ExcelFile.xlsx";
7
8
// Schreiben Sie die DataTable in die Excel-Datei
9
dt.WriteXml(path);

Alternativ kannst Du auch die OpenXML Bibliothek oder die Interop 
Bibliothek verwenden, um die Daten in die Excel-Datei zu schreiben. 
Diese Bibliotheken bieten spezielle Methoden zum Einfügen von Daten in 
Excel-Tabellen.

Ein weiterer Vorschlag, um das Programm schneller zu machen, wäre es, 
den Zugriff auf die Excel-Datei zu optimieren, indem man die Excel-Datei 
nur einmal öffnet und schließt, anstatt sie jedes Mal zu öffnen und zu 
schließen, wenn die Daten eingefügt werden sollen.

Grüße!

von Robin F. (gehacktes)


Lesenswert?

Super Danke,
werde ich mich gleich mal zu belesen.

Zu deiner Verbesserung: Da geb ich dir vollkommen Recht. Den Part mit 
der Excel auszulagern und beim beenden des Programms erst zu schließen 
wäre eine Option und würde das Programm schlanker machen.

Beste Grüße

von Dirk B. (dirkb2)


Lesenswert?

Wenn das über DCOM läuft (eine Instanz von Excel ist offen und du siehst 
das Tabellenblatt), kannst du auch die Bildschirmaktualisierung und/oder 
Neuberechnung temporär ausschalten.

Nach dem füllen aber wieder aktivieren.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.