Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Excel Export ohne COM und ohne SpreadsheetML
Fr3dd1
myCSharp.de - Member



Dabei seit:
Beiträge: 106

Themenstarter:

Excel Export ohne COM und ohne SpreadsheetML

beantworten | zitieren | melden

Hallo zusammen,

ich möchte folgendes umsetzen:
Eine Datenbank soll in eine Excel Daten exportiert werden.
Die Excel-Datei soll jedoch ohne COM-Komponenten und auch ohne
die Auszeichnungssprache SpreadsheetML erstellt werden.
Gibt es überhaupt noch andere Möglichkeiten?
Wenn ja, welche sind das?

Gruß Fr3dd1
private Nachricht | Beiträge des Benutzers
Taipi88
myCSharp.de - Member

Avatar #avatar-3220.jpg


Dabei seit:
Beiträge: 1.029
Herkunft: Mainz

beantworten | zitieren | melden

Hi,

warum auch immer diese Vorgaben existieren -
mur fällt spontan Aspose ein:Aspose Cells

Sieht nicht so aus als basiert es auf Com oder SpreadsheetML.

LG
Achim
private Nachricht | Beiträge des Benutzers
Fr3dd1
myCSharp.de - Member



Dabei seit:
Beiträge: 106

Themenstarter:

beantworten | zitieren | melden

ich habe gerade noch eine andere Möglichkeit gefunden. Hier findet man diese. Die Frage ist jedoch, in wie fern das wirklich das native Excel Format ist?
private Nachricht | Beiträge des Benutzers
ppratscher
myCSharp.de - Member



Dabei seit:
Beiträge: 10

beantworten | zitieren | melden

Hi,

du kannst native Office (xls, doc, ppt) Files mit der NPOI Bibliothek erstellen. Hatte diese bereits erfolgreich bei einem Projekt im Einsatz. Eine Installation von Office ist dafür nicht erforderlich.

MfG. Peter
private Nachricht | Beiträge des Benutzers
dN!3L
myCSharp.de - Experte

Avatar #avatar-2985.png


Dabei seit:
Beiträge: 2.891

beantworten | zitieren | melden

Willst du nur Daten schreiben oder auch Formatierungen festlegen?
Einfach nur eine Excel-Datei mit den Daten erstellen ist mittels OLEDB (z.B. Excel speichern) ohne zusätzliche Bibliotheken relativ leicht machbar.

Hast du mal im Forum gesucht? Denn beispielsweise Exceldateien (xls) binär schreiben - Ohne COM-Interop (PIA) nennt ja schon einige Möglichkeiten...
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von dN!3L am .
private Nachricht | Beiträge des Benutzers
Fr3dd1
myCSharp.de - Member



Dabei seit:
Beiträge: 106

Themenstarter:

beantworten | zitieren | melden

Mir reicht das einfache schreiben ohne Formatierung. Die von mir gepostete Möglichkeit funktioniert soweit, allerdings möchte ich auch Umlaute und Unicode Zeichen schreiben, momentan werden diese nicht richtig gespeichert. Hat hier jemand eine Idee?
private Nachricht | Beiträge des Benutzers
weismat
myCSharp.de - Member



Dabei seit:
Beiträge: 872
Herkunft: Frankfurt am Main

beantworten | zitieren | melden

Ich bin ein Fan von EPPlus.
Edit: Umlaute funktionieren ohne Probleme....
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von weismat am .
private Nachricht | Beiträge des Benutzers
Fr3dd1
myCSharp.de - Member



Dabei seit:
Beiträge: 106

Themenstarter:

beantworten | zitieren | melden

Wenn EPPlus nur excel 2007 / 2010 schreibt ist das zu wenig. Gut wäre wenn alle Excel Versionen mit den exportierten Files umgehen könnten.
private Nachricht | Beiträge des Benutzers
weismat
myCSharp.de - Member



Dabei seit:
Beiträge: 872
Herkunft: Frankfurt am Main

beantworten | zitieren | melden

EPPLus benutzt halt OpenXML - das alte Format ist propriatär, also nicht offiziell dokumentiert. Wer ein altes Excel hat, muss halt den Compatibility Pack installieren...
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von weismat am .
private Nachricht | Beiträge des Benutzers
dN!3L
myCSharp.de - Experte

Avatar #avatar-2985.png


Dabei seit:
Beiträge: 2.891

beantworten | zitieren | melden

Zitat von Fr3dd1
Die von mir gepostete Möglichkeit funktioniert soweit, allerdings möchte ich auch Umlaute und Unicode Zeichen schreiben, momentan werden diese nicht richtig gespeichert.
Bei mir schon. (Siehe Anhang.)
Welchen Connectionstring bzw. OLE-DB-Provider verwendest du? Und welche Excel-Version?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von dN!3L am .
Attachments
private Nachricht | Beiträge des Benutzers
Fr3dd1
myCSharp.de - Member



Dabei seit:
Beiträge: 106

Themenstarter:

beantworten | zitieren | melden

Ich verwende excel 2003 / 2007 und meine Connection baue ich wie folgt auf:


SqlCeConnection conn = new SqlCeConnection("Data Source = " + DataSource);
(DataSource ist der Pfad zu einem SQLCE DB File "C:\\db.sdf").

Wie hast du das gelöst?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Fr3dd1 am .
private Nachricht | Beiträge des Benutzers
dN!3L
myCSharp.de - Experte

Avatar #avatar-2985.png


Dabei seit:
Beiträge: 2.891

beantworten | zitieren | melden

Ich meine die OLE-DB-Verbindung zur Excel-Mappe. Ich habe es wie in Excel speichern gelöst.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von dN!3L am .
private Nachricht | Beiträge des Benutzers
Fr3dd1
myCSharp.de - Member



Dabei seit:
Beiträge: 106

Themenstarter:

beantworten | zitieren | melden

Zur Excel Mappe habe ich keine OLE-DB-Verbindung erstellt. Dort greife ich direkt über den File- und Byte-Stream zu.
private Nachricht | Beiträge des Benutzers
dN!3L
myCSharp.de - Experte

Avatar #avatar-2985.png


Dabei seit:
Beiträge: 2.891

beantworten | zitieren | melden

Oh, ich habe mich oben verlesen. Du hast "mir" statt "dir" geschrieben. Ich war davon ausgegangen, dass du die von mir gepostete Möglichkeit ausprobiert hast.

Also noch einmal zum Entwirren: Ich habe die Methode aus Excel speichern genommen (mittels OLE-DB-Verbindung die Excel-Mappe erstellen/befüllen). Damit gehen auch umlaute und Unicode-Zeichen. Und wie gesagt ohne zusätzliche Bibliotheken - es muss nur die Microsoft Access Database Engine installiert sein.
private Nachricht | Beiträge des Benutzers
Fr3dd1
myCSharp.de - Member



Dabei seit:
Beiträge: 106

Themenstarter:

beantworten | zitieren | melden

Wird die Microsoft Access Database Engine bei Windows bereits mit installiert oder muss man das immer nachinstallieren? Kenne mich da nicht so genau aus.
private Nachricht | Beiträge des Benutzers
dN!3L
myCSharp.de - Experte

Avatar #avatar-2985.png


Dabei seit:
Beiträge: 2.891

beantworten | zitieren | melden

Von welchen Umgebungen reden wir denn?
Soweit ich weiß, musst du die 64bit-Version immer noch separat installieren. Wenn du aber deine Anwendung als 32bit kompilierst und keine xlsx-Dateien erstellen willst, sollte der Zugriff mittels Jet eigentlich möglich sein, ohne zusätzlich was installieren zu müssen.
Auf Excel Connection String Samples - ConnectionStrings.com findest du auch verschiedene Beispiele.
private Nachricht | Beiträge des Benutzers
Fr3dd1
myCSharp.de - Member



Dabei seit:
Beiträge: 106

Themenstarter:

beantworten | zitieren | melden

So, ich werde das Ganze jetzt mit OLE DB umsetzen.
Ich habe allerdings direkt zum Anfang eine Frage:
Kann man im ConnectionString angeben, dass die Datei neu erzeugt werden soll?
Wenn nicht, wie kann ich diese Datei dann erzeugen?
private Nachricht | Beiträge des Benutzers
dN!3L
myCSharp.de - Experte

Avatar #avatar-2985.png


Dabei seit:
Beiträge: 2.891

beantworten | zitieren | melden

Wenn die im Connectionstring angegebene Datei nicht existiert, wird sie automatisch angelegt.
private Nachricht | Beiträge des Benutzers
Fr3dd1
myCSharp.de - Member



Dabei seit:
Beiträge: 106

Themenstarter:

beantworten | zitieren | melden

Ja, das habe ich gemerkt, habe mich auch falsch ausgedrückt.

Neben Excel soll das Ganze auch in Access geschehen. Hier soll es ja auch mit OLEDB gehen. Jetzt die Frage, wie ich eine solche Access DB erstellen kann?
private Nachricht | Beiträge des Benutzers
Fr3dd1
myCSharp.de - Member



Dabei seit:
Beiträge: 106

Themenstarter:

beantworten | zitieren | melden

Habe auch noch eine Frage zu Excel: Wenn ich die Tabellen mit Create anlege, werden in den Excel Arbeitsmappen ja die Spaltennamen oben mit eingebaut. Gibt es eine Möglichkeit dies zu unterbinden? Das die Tabelle direkt mit den Daten anfängt und nicht zuerst die Spaltenköpfe auflistet?
private Nachricht | Beiträge des Benutzers
dN!3L
myCSharp.de - Experte

Avatar #avatar-2985.png


Dabei seit:
Beiträge: 2.891

beantworten | zitieren | melden

Zitat von Fr3dd1
Das die Tabelle direkt mit den Daten anfängt und nicht zuerst die Spaltenköpfe auflistet?
Guck mal in deinen Connectionstring:
Zitat von Excel Connection String Samples - ConnectionStrings.com
"HDR=Yes;" indicates that the first row contains columnnames, not data. "HDR=No;" indicates the opposite.
Allerdings kannst du dann in den SQL-Befehlen auch keine Spaltennamen mehr verwenden. Die Spalten heißen dann "F1", "F2", "F3" usw.
Und die Datentypen scheinen dann auch nicht mehr so richtig zu funktionieren. Bei meinem Test waren alle Spalten Text (statt Zahlen/Datum/etc. bei HDR=Yes).
private Nachricht | Beiträge des Benutzers
Fr3dd1
myCSharp.de - Member



Dabei seit:
Beiträge: 106

Themenstarter:

beantworten | zitieren | melden

Muss ich den Befehl zum Erstellen der Tabelle dann auch abändern? Nur auf HDR umstellen reicht nicht, es erscheinen immer noch die Spaltennamen in der Tabelle.
private Nachricht | Beiträge des Benutzers
Fr3dd1
myCSharp.de - Member



Dabei seit:
Beiträge: 106

Themenstarter:

beantworten | zitieren | melden

Keiner einen Tipp für mich, was die Spaltennamen angeht?
private Nachricht | Beiträge des Benutzers
dN!3L
myCSharp.de - Experte

Avatar #avatar-2985.png


Dabei seit:
Beiträge: 2.891

beantworten | zitieren | melden

Ich hab's bei mir mal probiert und beim Create Table werden tatsächlich die Spaltennamen in die erste Zeile geschrieben.
Woran das liegt oder wie man das beseitigen kann, weiß ich leider nicht.
private Nachricht | Beiträge des Benutzers
Fr3dd1
myCSharp.de - Member



Dabei seit:
Beiträge: 106

Themenstarter:

beantworten | zitieren | melden

Ich frage mich, ob das überhaupt möglich ist? Eventuell referenziert OleDB selbst über den Text in den Spaltenüberschriften. Wäre sehr schade wenn es nicht möglich wäre, die Spaltenüberschriften wegzulassen.
private Nachricht | Beiträge des Benutzers
Fr3dd1
myCSharp.de - Member



Dabei seit:
Beiträge: 106

Themenstarter:

beantworten | zitieren | melden

Ist zufällig jemandem eine Möglichkeit in den Sinn gekommen?
private Nachricht | Beiträge des Benutzers
Ruben
myCSharp.de - Member

Avatar #avatar-2971.jpg


Dabei seit:
Beiträge: 61
Herkunft: Hamburg

beantworten | zitieren | melden

Hallo Fr3dd1,

einen Verweis hat dN!3L (dem ich das Leben einmal ziemlich schwer gemacht habe ^^) schon auf mein Thema gemacht.

Dort findet man ganz am Ende einen Link zu dem HIER.

Das Projekt heißt zwar ExcelReader, aber schreiben bzw. erstellen von Excel-Dateien im XLS-Form geht auch.
Der Entwickler dieses Projekt hat sich die Mühe gemacht, das CDFF (Compound Document File Format) über eine eigene Bibliothek anzusteuern.

Leider gibt es von Microsoft keine Bibliotheken für das alte Format (von 97 bis Office 2003). Aber der Aufbau der verschiedenen Office-Dateien ist öffentlich bekannt. Anhand dessen hat auch OpenOffice seine Bibliotheken aufgebaut.

Schau einfach mal rein in den ExcelReader.
Unter Umständen muss man den Code noch etwas anpassen, weil ich in bestimmten Situationen Fehler erhielt - aber nur geringfügig.


Gruß
Ruben
In der Zeit vor fünf Minuten ist Jetzt die Zukunft. Jetzt ist die Gegenwart. Die Zeit, in der ich zu erzählen begonnen habe, ist die Vergangenheit von Jetzt und die Zukunft von der Gegenwart der Zeit, fünf Minuten bevor ich zu erzählen begann.
private Nachricht | Beiträge des Benutzers