Laden...

Ganz einfaches exportieren in Excel?

Letzter Beitrag vor 16 Jahren 11 Posts 2.434 Views
Ganz einfaches exportieren in Excel?

Hallo,

Bin schon fast am Verzweifeln. Hab schon viel gesucht, aber nix 100% konkretes gefunden. Vielleicht bin ich auch noch zu neu um alles 100%ig zu verstehen 😉

Folgendes Problem:

Habe ein DataSet welches ich ganz einfach in eine, noch nicht vorhandene, Excel Datei schreiben will. Es muss auch eine xls-Datei sein, keine csv. Hab bis jetzt im Internet nur riesige Code-Schnippsel gefunden. Das muss doch auch einfacher gehn, oder etwa nicht?

Ich hoffe es kann mir hier jemand ganz einfach erklären wie das geht.

Vielen Dank

Snippet

Überall gesucht? Hier gibts ein fertiges Snippet: http://dotnet-snippets.de/dns/excel-datatable-mittels-oledb-in-excel-dokument-exportieren-SID272.aspx

Wenn Du Leerzeichen in Feldnamen hast, musst Du noch eckige Klammern einbauen, ansonsten einfach ausführen und glücklich sein.

Die Anwendung ist denkbar einfach:


ExcelExport.FillExcelSheet(myDataTable,@"c:\test.xls");

Hab dein Script schon probiert, aber es klappt nicht. Also ich bekomme es nicht zum laufen 😉

Hab dein Script in ne neue Klasse-Datei eingefügt um nicht mein Hauptscript zu überlasten. Weiss auch nicht ob das richtig war.

Danach habe ich in meinem Hauptscript "using Rainbird.Examples.Office.Excel.OLEDBAccess;" hinzugefügt, wo er mir auch immer nach dem Punkt den nächsten Zweig gezeigt hat.

Jedoch bekomme ich dauernd folgende Fehlermeldung:

CS0246: The type or namespace name 'Rainbird' could not be found (are you missing a using directive or an assembly reference?)

Ist in euren Augen vielleicht nur ne Dummheit, aber für mich ist das absolutes Neuland. 🙁

Neue Datei

Wenn Du ein Visual Studio eine neue Klasse zufügst, allen Code der vom Visual Studio dort automatisch reingeschrieben ist löschst ([Strg] + [A], [Entf]), dann den Snippet-Code reinkopierst und das Ganz kompilierst, sollte das ohne Probleme laufen.

Natürlich kannst Du auch nur den Klassen-Code des Snippets ohne Namensraum kopieren. Dann wird der Stammnamensraum Deines Projekts verwendet.

Also wenn ich ech sofort über den IE ausführe, kommt diese Fehlermeldung die ich im vorherigen Post geschrieben habe.

Wenn ich jedoch über den Debugger gehe, also die "Play"-Taste im VS2005 betätigen, dann lädt er mir die Seite schon mal. Wenn ich dann auf den Export-Button drücke bekomme ich folgende Fehlermeldung:

Error: Exception has been thrown by the target of an invocation.

Hatte das auch so eingefügt wie du gesagt hast, also alles aus der Klasse raus und dann dein Code eingefügt.

Jedoch müsste es doch klappen wenn ich sofort über die Adresse zu der Page hingehe?!?

Ie?!

Warum IE? Ist Deine Anwendung eine Web-Anwendung?

Dieses Snippet verwendet unter anderem auch COM-Automatisierung zum erzeugen einer leeren Excel-Datei. Deshalb ist es für Web-Anwendungen nicht geeigent! Du hattest nicht erwähnt, dass es sich um eine Webanwendung handelt.

Bei Web-Anwendungen solltest Du den Excel-Export mit SpreadsheetML (Das ist ein XML-Dialekt) machen. Du kannst Deine Daten mit einer XSL-Transformation in dieses Format bringen. Das Schema und weitere Infos dazu findest Du unter: [FAQ] Office (Word, Excel, Outlook, ...) in eigenen Anwendungen verwenden

Sorry sorry sorry, hab das net erwähnt. 8o

Ja, es ist eine Web-Anwendung. Dann schau ich mir mal das mit dem XML an. Hoffe ich komme dann zu meinem Resultat.

Meld mich dann nochmals....

Also, ich hab mir mal die Schemas da runtergezongen. Bin jedoch damit völlig überfordert. 🙁

Kommt mir bald echt vor als ob .NET zu schwer sei für mich...Wie kann ich das nun einbinden und benutzen? 🙁

Hi,

ich hoffe ihr könnt mir was zu folgendem Problem mit dem Snippet von Rainbird sagen. Ich habe Office 2007 unter Vista installiert. Wenn ich jetzt die FillExcelSheet Methode aufrufe bringt er mir einen Fehler beim Aufbau der OleDB Verbindung: "Das erwartete Format stimmt nicht." Die Exceldatei selbst wurde aber korrekt erstellt und das Schema korrekt eingetragen. Beim öffnen der Exceldatei in Excel 2007 sagt er mir aber auch, dass das angegebene Dateiformat nicht mit dem erwarteten übereinstimmt. Ich übergebe als Dateinamen einen vom Benutzer gewählten aus dem SaveFileDialog und lasse die Dateierweiterung .xls setzen. Da Ole ja auch die Excel 8 Schnittstelle nutzt sollte das doch auch der richtige Weg sein oder?

GRüße

Ben

Excel 2007

@bhelbig: Ich habe leider kein Office 2007 und deshalb auch keine Möglichkeit es damit zu testen. Mit Excel 2000 und 2003 sollte es keine Probleme geben. Ich wüsste auch keinen Grund, warum es nicht mit Excel 2007 laufen sollte.
Verwendest Du Spaltennamen mit Leerzeichen oder Sonderzeichen?
Hast Du schon mal in der Microsoft Knowledge-Base gesucht (http://support.microsoft.com)?

@|SmEaGoL|: Mit .NET hat das nix zu tun. Das ist Standard-XML-Technologie. Auch mit PHP wäre es nicht einfacher. Da aber viele Leute Probleme haben, komplexe XML-Schemas zu versehen, werde ich ein kleines XML-Beispiel mit Excel machen (Ich muss dazu aber erst etwas Zeit finden, deshalb wird es ein bisschen dauern). Schließlich sage ich andauernd, dass man es mit XML machen soll 😉.

Was das Einbinden und Benutzen betrifft: Du nimmst ein XmlDocument-Objekt oder einen XmlTextWriter, referenzierst das entsprechende Schema und schreibst eine XML-Datei. Wenn Du Dich genau an das Schema hälts, wird Excel die Datei später ohne Probleme lesen können. Das Schema beschreibt, welche Tags es im "Excel-XML" gibt. Wenn Du noch nicht mit XML-Technologieen gearbeitet hast, solltest Du Dir zuerst die Grundlagen aneignen. Am besten schaust Du Dir die Klasse XmlDocument zuerst an. Damit geht es am einfachsten.

Excel Export mit XML

Ich habe ein kleines Beispiel zur Demonstration von SpreadsheetML (so heißt der XML-Dialekt von Excel) geschrieben.
Das sollte die Frage, wie man das einbindet und benutzt beantworten:

Excel-Export ohne Excel (Snippet)