Forum: PC-Programmierung C#: Grosse Datenmenge in Excel exportieren


von Patrick B. (p51d)


Lesenswert?

Hallo miteinander

Ich bin auf ein kleines Problem gestossen:
Bei einem Datenlogger will ich die empfangenen Daten in eine Excel Datei 
speichern, um ein paar Diagrammer erstellen zu können. Dabei habe ich 
mich für das Clipboard entschieden, da hier der Export am schnellsten 
geht.
ABER, wenn ich jetzt Daten >2.5MB kopieren möchte, bleibt die GUI hängen 
(SaveFileDialoge). Ich müsste aber bis zu 10MB kopieren können.

Zweiter Ansatz war, das ganze Exportieren in einen BackgroundWorker zu 
verschieben, aber leider ist das ClipBoard nur SingleTread...
Hierbei wäre sehr nützlich gewesen, dass ich die ProgressBar als 
Zustandsanzeige hätte nutzen können. So hätte man gesehen, wenn der 
Export beendet gewesen wäre.

Hat jemand einen anderen Ansatz für mich?

Die Timer-Variante und Zerhacken der Daten möchte ich vermeiden, da die 
Excel COM sehr langsam ist. Daher der Gedanke, alles in einem Rutsch zu 
machen.

Besten Dank
MFG
Patrick

von Ich (Gast)


Lesenswert?

Probier es mit einer CSV-Datei die kann Excel laden.

http://de.wikipedia.org/wiki/CSV_(Dateiformat)

von Patrick B. (p51d)


Lesenswert?

Die csv-Version habe ich schon implementiert. Aber leider wollen die 
"Auftraggeber" eine direkte Excel Variante.

von Ich (Gast)


Lesenswert?


von Arc N. (arc)


Lesenswert?

Ich schrieb:
> und hilft dir das weiter?
> http://blog.stefan-macke.com/2006/06/28/c-projekt-zugriff-auf-excel-dateien/

COM war (s.o.) nicht gewollt und zu langsam...

Andere Varianten wären:
Open XML SDK
http://www.microsoft.com/download/en/details.aspx?id=5124
oder das alte BIFF direkt zu schreiben z.B.
http://www.codeproject.com/KB/office/biffcsharp.aspx

von Björn (Gast)


Lesenswert?

Haben wir schon häufig verwendet - funktioniert wunderbar:

http://www.carlosag.net/Tools/ExcelXmlWriter/

von Thomas (Gast)


Lesenswert?

Du kannst auch das Excelfile mit OLEDB öffnen und deine Daten 
reinschreiben.
oder, noch viel schöner, du erstellst einen lokalen Report (rdlc) 
füllest ihn mit deinen Daten, Kundenlogo usw. und speicherst ihn als 
excel ab.
Das geht auch ohne preview.

Thomas

von Robert L. (lrlr)


Lesenswert?

über COM kann man aber (IMHO) auch "tricksen"
indem man nicht jede zelle einzeln sondern in "blöcken" übergibt

da gibt es sicher mehr als eine möglichkeit..


ich würd allerdings die diagramme einfach selber erzeugen

dazu gibt es in c# doch sicher auch bibliotheken?!

von Dietmar Paul (Gast)


Lesenswert?

Ich arbeite einfach mit dieser DLL: http://www.export2excel.net

Die ist unvorstellbar schnell und nur 17 KB groß!

von b.sc. (Gast)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.