Mastodon

renephoenix.de

Der CSV-Horror mit Excel

Das CSV-Format dient eigentlich zum Austausch von Tabelleninhalten, nahezu jedes Programm verfügt über eine Schnittstelle für den Im- und Export im CSV-Format dazu. Das Format selber ist eigentlich sehr einfach aufgebaut und kann auch mit dem Texteditor schnell verfolgt werden. Es gibt zwar keinen festdefinierten Standard, die gängige Interpretationsweise ist in der RFC 4180 niedergeschrieben:

  • die Zeilen werden durch Zeilenwechsler getrennt
  • die Spalten durch ein Komma getrennt (daher der Name)
  • Anführungszeichen sind notwendig, sobald der dargestellte Text Zeilenwechsel oder Komma enthällt
  • Anführungszeichen im Text werden doppelt dargestellt.

Die Welt könnte so einfach sein, wenn sich jeder an dieses Regelwerk halten würde ... ja, wenn ... denn die wichtigsten Programme, die Tabellenkalkulationsprogramme, halten sich nicht dran. Bei MS Excel spielen Kommas standardgemäß keine Rolle: Spalten sollten da mit Semikolon getrennt werden.

Noch schlimmer sind jedoch die automatischen Interpretationsroutinen derartiger Programme. Nehmen wir beispielsweise folgende CSV-Datei:

"Server 1";08/15;010.020.030.040
"Server 2";47/11;"011.022.033.044
011.022.033.045"
"Server ""D;E""";08/16;012.024.036.048

Sie enthält eine Slotbezeichnung an einem Switch in einer nicht unüblichen Darstellung sowie eine IP-Adresse. Sowohl Excel als auch OpenOffice interpretieren standardmäßig ersteres als Datum (01.08.2015) und letzteres als Zahl (10020030040). Und das ist einfach eine nervige Angelegenheit. Immerhin bietet OpenOffice beim Laden einer CSV-Datei ein paar Einstellungsmöglichkeiten, mit denen ich den Datentyp einer Spalte explizit auf »Text« setzen kann, wodurch der Text dann so dargestellt wird, wie er in der Datei auch existiert. Excel bietet diesen Möglichkeit nicht.

Nach längerem Ausprobieren habe ich in Excel zwei mögliche Varianten gefunden, die aber mehr als nur umständlich sind:

  • Man öffnet die CSV-Datei in einer Textdatei — und kopiert den Inhalt über die Zwischenablage nach Excel. Nach dem man (nur) die erste Spalte markiert, kann man das Menu Daten -> Text in Spalten einen Spaltentrenner definieren.
  • Über Daten -> Externe Daten importieren -> Daten importieren eine Datei auswählen und Spaltentrenner definieren.

Beide Varianten haben jedoch den Nachteil, daß der Zeilenumbruch bei Server 2 nicht interpretiert wird, wodurch auch dieses Ergebnis nicht wirklich verwertbar ist. Immerhin werden in sämtlichen Varianten alle Anführungszeichen korrekt erkannt — und interpretiert.

Und die Ironie an der Sache: ich habe nur eine CSV-Datei importieren wollen, die ich zuvor mit Excel erstellt und abgespeichert habe. Oder habe ich eine Möglichkeit übersehen, wie man die obige CSV-Datei fehlerfrei in Excel 2003 laden kann? Aber so ist Excel nur bedingt benutzbar ...

Bisherige Kommentare (0)

Es wurde noch kein Kommentar geschrieben!

Kommentar verfassen

Freiwillige Angabe
Freiwillige Angabe
Der Text kann mit Textile formatiert werden, z.B. *fett* _kursiv_ "link":url. Wie das geht?
Wieviel ist 40 plus 2?

Bisherige Trackbacks (0)

Es wurde noch kein Trackback empfangen!