Wie Excel-Tabellen auslesen und als Array abspeichern



  • Hallo zusammen,

    mich würde interessieren, wie ich Zugriff auf die Werte meine Exceltabellen mit einem kleinen Consolenprogramm bekomme. Ich möchte die Werte aus der Datei auslesen und natürlich damit weiterrechnen.
    Ich selber bin neu in der C++-Programmierung und hoffe hier vielleicht ein paar nützliche Tipps und Hilfestellungen zu bekommen.

    Gruß, euer Areas



  • Wenn das ist wie du schreibst

    Ich selber bin neu in der C++-Programmierung

    dann würde ich Dir nicht empfehlen, Excel-Dateien zu verarbeiten. Das ist nämlich nicht so einfach. Das Format selber ist hochkompliziert und es gibt verschiedene Versionen, also ist es eigentlich nur über eine Bibliothek zu verarbeiten. Alternativ kann man Excel selbst über die COM-Schnittstelle o.ä. aufrufen, das ist unter .Net einigermaßen einfach aber auch nicht ganz trivial.

    Mein Tipp:
    Speicher die Excel-Tabelle im csv-Format. Das ist leicht zu zerlegen und zu verarbeiten. Insbesondere wenn Du .Net benutzt, dann kannst Du nämlich die OpenTextFieldParser-Klasse benutzen. Du kannst es aber auch selbst Parsen. Das Format zu Schreiben ist ganz einfach.
    Da wirst Du mehr Spaß dran haben.



  • Hallo Wirdbald,

    danke schonmal für den Tipp. Ich habe mal fix meine Tabelle als .csv gespeichert und das auslesen klappt schonmal super, da muss ich ja nurnoch ein bisschen konvertieren und schon hab ich mein Wunscharray *freu*.

    Besteht denn die Möglichkeit eine Exceltabelle bzw. Arbeitsmappe direkt als .csv abzuspeichern, damit ich es einfach auslesen kann?



  • Ja sicher, du kannst in Excel im "Speichern unter..."-Dialog als Format "csv(Trennzeichen - getrennt)" auswählen. Die CSV-Dateien kannst Du dann auch wieder in Excel öffnen.
    Die CSV-Dateien sind ja dann einfache Textdateien, kannst Du also im Editor betrachten. Ein bisschen aufpassen musst Du bei Parsen, falls in einer Zelle ein Semikolon vorkommt: Dann wird der ganze Zelleninhalt in Anführungszeichen abgespeichert. Aber den Fall kannst Du ja auch einfach vermeiden.



  • Das ich in Excel meine Arbeitsmappe als .csv abspeicher kann habe ich schon gemerkt. Nur wollte ich vermeiden jede Tabelle und jede Arbeitsmappe einzeln als .csv abspeichern zu müssen.

    Ich hatte gehofft, dass ich meine kleine Konsolenanwendung die Exceldatei öffnen lasse und einfach als .csv in einen temporären Ordner abspeichere und dann direkt wieder öffne. So würde ich mir das händische konvertieren sparen können.
    Ist das möglich?



  • Wenn Du Excel steuern willst, dann kannst du auch gleich auf csv-dateien verzichten. Hier zum Beispiel steht, wie man Excel steuern kann: http://support.microsoft.com/kb/302084/de



  • Also ich hab mal versucht, das Programm zu kompilieren, aber da bekomm ich 2 Fehlermeldungen, zudem ist das ja für C#. Davon habe ich leider keine Ahnung.

    Ich will ja nicht die Exceldatei bearbeiten, sondern einfach die Werte auslesen, wurde da bisher leider nicht fündig.

    Gibts da noch eine andere Möglichkeit?



  • Areas schrieb:

    Das ich in Excel meine Arbeitsmappe als .csv abspeicher kann habe ich schon gemerkt. Nur wollte ich vermeiden jede Tabelle und jede Arbeitsmappe einzeln als .csv abspeichern zu müssen.

    Ich hatte gehofft, dass ich meine kleine Konsolenanwendung die Exceldatei öffnen lasse und einfach als .csv in einen temporären Ordner abspeichere und dann direkt wieder öffne. So würde ich mir das händische konvertieren sparen können.
    Ist das möglich?

    Solche Konverter gibt es doch aber schon!
    http://www.softinterface.com/Convert-XLS\Convert-XLS.htm


Log in to reply