Parser für Exeltabellen

Hallo zusammen!
Ich benötige für ein Projekt einen Parser, der mir Exeltabellen einließt, damit ich deren Inhalte nutzen kann. Man kann ja die Tabellen als Textfiles speichern, so dass die Felder durch bestimmte Zeichen (standardmäßig Tabs) getrennt werden.

Mein Problem:
In den Tabellenfeldern stehen meistens Fließkomma-Zahlen mit unterschiedlicher Länge. In einigen stehen aber auch die Überschriften der Zeilen/Spalten der Tabellen. Wie ich die Überschriften einlese, hab ich mir schon rausgefunden , aber wie kann ich die Fließkommawerte am besten einlesen und abspeichern?

Ich hatte daran gedacht, sie zunächst auch als strings einzulesen und dann umzuwandeln, aber das geht doch bestimmt auch besser, oder?
Gibt es denn die möglichkeit, direkt beim einlesen des ifstreams zu erkennen, ob man da jetzt einen string einließt oder man das ganze direkt als Zahl speichern kann? Die Tabellen sind nämlich nicht immer gleich und ich weiß nicht im Vorraus, ob das nächste Feld eine Überschrift, oder ein Datenfeld enthält…

Ich bin für jeden Tip dankbar!

Viele liebe Grüße

Nils

Hallo Nils,

ich kenn mich in Excel überhaupt nicht aus, aber existiert da nicht am Anfang
der Tabelle eine Definitionszeile, die die Definition für die entsprechende
Spalte enthält. Es würde dann reichen, die zu parsen um für den Rest zu wissen,
was kommt.
Möglich, dass man das beim Erzeugen der Tabelle auch erst angeben muss und ich
weiss nicht, ob du darauf Einfluss hast.
Manchmal sind die einfachsten Sachen die simpelsten.
Gruss
Norbert

Ich würde immer die Strings bis zu einem Trennungszeichen einlesen (z.B. ein TAB). Diesen String versuchst du dann in eine Zahl umzuwandeln, erst INT, dann FLOAT/DOUBLE. Wenn das nicht klappt ist es halt ein String. Du kannst dir natuerlich auch einen richtigen Scanner/Parser schreiben, geht mit flex oder yacc, ist aber wohl nicht nötig…
Infos zu den Funktionen zur Zahlen-Umwandlung gibts hier : http://www.acm.uiuc.edu/webmonkeys/book/c_guide/
Die Funktionen heissen z.B. „atoi“ oder „atof“ etc.

KIM

Danke für die Antort! So gehts!

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]