Autor Beitrag
Skiller-1988
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 100

Win XP | Debian | Ubuntu
C# | PHP | VB.NET
BeitragVerfasst: Mi 21.01.09 10:42 
Hi,
ich habe folgende Frage und zwar möchte ich gerne Wissen welche „Technologie“ ich verwenden soll wenn ich Werte aus einer DataTable in Excel (2007) hineinschreiben möchte. Zurzeit habe ich das Problem mittels Interoperabilität gelöst und es funktioniert auch soweit, doch nun möchte ich wissen ob es noch eine bessere bzw. schnellere variante gibt. Ich denke da an OLEDB Dataprovider bzw. XML. Also meine Frage was haltet ihr am geeignetsten um ein Excel Dokument anzulegen und es mit Werten aus einer C# DataTable zufüllen? Gibt es da grundlegende Performance Unterschiede?

_________________
~ Wer Rechtschreibfehler findet darf sie behalten ~
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4805
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 21.01.09 12:20 
Sofern es nur um die Erzeugung von reinen Datentabellen geht (ohne Formatierungen) würde ich immer XML bzw. sogar CSV-Dateien erzeugen (da hierfür noch nicht einmal Excel auf dem System installiert sein muß). Und von der Performance her sicherlich um einiges schneller als Daten per OLEDB zu verschicken.
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 21.01.09 12:51 
Hallo Th69,

ich glaube, Du hast das Ziel nicht genau gesehen: Er will eine Excel-Tabelle mit Inhalt aus einer DataTable füllen. Es geht nicht darum, die DataTable "irgendwie" zu exportieren.

Gruß Jürgen
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4805
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 21.01.09 13:01 
Doch das habe ich wohl gesehen -)
Darum habe ich ja "(ohne Formatierungen)" geschrieben, denn mit Excel kann man ja auch XML und CSV-Dateien lesen und bearbeiten.
Es gibt sogar ein spezielles Excel-XML-Format (nennt sich "XML Kalkulationstabelle 2003").

Wenn jedoch in ein gerade geöffnetes Excel-Dokument die Daten geschickt werden sollen, dann bleibt wirklich nur der Weg über OLE.
Skiller-1988 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 100

Win XP | Debian | Ubuntu
C# | PHP | VB.NET
BeitragVerfasst: Mi 21.01.09 14:13 
naja die Formatierung wäre nicht ganz so wichtig es geht mir nur darum die werte aus einer DataTable und jetzt auch aus einen 2 dimensionalen - Array in Excel zu bekommen. Das XML die beste Lösung ist habe ich mir fast gedacht doch wie sieht es da mit dem Programmieraufwand aus? Hat eventuell einer einen Link zur Problematik?

_________________
~ Wer Rechtschreibfehler findet darf sie behalten ~
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4805
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 21.01.09 14:27 
Um einfach eine XML-Datei zu erzeugen, könntest du DataTable.WriteXml() verwenden. Jedoch weiß ich nicht, ob diese von Excel sinnvoll gelesen werden kann.
Im Anhang habe ich mal eine Klasse (ExcelXML) beigefügt, welche die DataTable als ein für Excel verständliches XML rausschreibt und wiedereinliest (WriteToFile and ReadFromFile). Der Parameter 'nWidth' gibt die Breite der Spalten an (oder -1 als Default).
Einloggen, um Attachments anzusehen!
Skiller-1988 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 100

Win XP | Debian | Ubuntu
C# | PHP | VB.NET
BeitragVerfasst: Mi 21.01.09 14:41 
Danke dir erstmal werde das mal testen.

_________________
~ Wer Rechtschreibfehler findet darf sie behalten ~