Exkurs: Was ist ein csv Format?
(die Darstellung verkürzt pointiert und ist damit teilweise nicht ganz richtig)
Dazu eine Vorfrage:
Was ist ein Bit und wie viele Informationen können wir darin speichern?
Ein Bit ist bekanntlich die kleinste Einheit eines Computers und wir können 2 Informationen speichern: Strom oder nicht Strom. Wer dazu gerne ein Bild hätte, lege sich einen Kuli neben den PC (oder ein Streichholz) und drehe ihn mit der Spitze einmal zu sich und dann um PC: 2 Möglichkeiten.
Hätten wir so einen “Computer” mit einem Bit, - so könnte der nicht bis 3 zählen.
Daher kam Konrad Zuse 1930 auf die Idee, einige Bits in Serie zu schalten:
Bitte legt einen zweiten Kuli dazu und probiert es aus:
Wer 2 bits hat, kann - genau - 2 HOCH 2 Informationen speichern, also 4.
der geniale Zuse fragte sich:
Wie viele Infos müsste man erst bekommen, wenn man gleich 8 bits in Serie legt?
Genau: 2 hoch 8.
Wer etwas Kopfrechnen kann, wird schnell wissen: Das ist 256.
Und wer so verspielt ist wie ich, hat jetzt mit 8 Kugelschreibern visualisiert, was ein Byte ist.
Habt Ihr Euch je gewundert, warum in Netzwerkadressen oder Subnetzwerken so oft steht “255”?
Das ist von inkl. 0 bis 255 gezählt genau ein BYTE an Speicherplatz.
Mit anderen Worten: Ein Byte besteht aus 8 bits und kann daher 256 verschiedene Informationszustände haben.
Jetzt dachte man sich: Was ist, wenn wir für jeden Speicherzustand einen Buchstaben oder ein sonstiges Zeichen fingieren? - Damit war der ASCII-Code geboren. Ein System, dass in einem einzigen Byte Speicherplatz genau ein Zeichen speichern kann.
Das kann sein ein großes A oder auch ein Bindestrich oder ein kleines x.
In Summe jedoch nicht mehr als genau 256 Möglichkeiten.
Das war zwar total speichereffizient, doch die zu speichernden Zeichen waren einigen nicht so günstig. So erfanden sie andere Zuordnungen: ANSII, UTF-8 uvam. Wobei keines davon “moderner” ist in engerem Sinn, sondern vielmehr der altes Sauerier aus den 1960er namens ASCII verschiedenfarbig lackiert wurde.
Ein System, das solche ein-Byte Zeichenketten in Serie speichert (und gruppiert) ist csv. Da selbst die Gruppierungsinformation nur eines von den 256 Zeichen sein kann, ist es oft mehrdeutig. Dummerweise wissen wir nicht mal, ob es sich orientiert an ASCII, ANSI, UTF-8 oder der Frau Holle. Es hat eben nicht mehr als eine Byte-weise Darstellung.
Dadurch, dass 1-Byte-je-Zeichen so alt ist, kann es jedes Programm lesen. Kann es eines nicht, benennt die Datei um in *.txt und schon geht es. Es ist nicht mehr als 1 Byte = 1 Zeichen.
Wenn wir jetzt etwas “in csv exportieren” bedeutet das, dass wir die Informationen eines Programmes oder einer Darstellung auf 256 Einzelzeichen eindampfen. Also so wenig, dass man seit den 1960er damit schon nicht zu recht kam und deshalb den ASCII-Code ständig “neu erfand” bzw. “anders bunt lackierte”. Dabei geht jede Menge Information verloren! Denn mit 256 Zeichen kann man eben sehr, sehr wenig darstellen.
Werden jetzt diese 256-Zeichenketten in irgendein Progamm importiert, “kann” es jedes Programm lesen. Klar. Ist ja archaisch. Doch welches Programm diese Zeichen zufällig wieder zu einer brauchbar formatierten Datei zusammensetzt, das ist ziemliche Glückssache.
Und die Moral von der Geschicht: Vernichte Deine Formatierungsinformationen nicht.
Da sich die Beschwerden der Anwender zu den meisten Programmierern herumgesprochen haben, bieten heute fast alle modernen Anwendungen neben csv als Universalschnittstelle, auch Exportmöglichkeiten an, die eben nicht derart viele Informationen vernichten.
Dabei ist xls sehr probat.
xls wird von Excel gelesen, ist kompatibel zu ods (OpenOffice und Verwandte) und stellt komplette Tabellen dar. Es weiß auch ob “5” als Buchstabe oder Zahl interpretiert wird. Programmiertechnisch gibt es Schnittstellen in dieses Format, das komplette Elemente wie etwa ganze Spalten lesen kann.
xml dagegen ist abwegig als Export, weil es ein Programm braucht, dass seine subjektiv vergebenen Formatierunsinfos lesen kann. Sprich: xml ist von einem konkreten Programm abhängig, wie etwa PP, dessen gesamte Information in XML gespeichert sind.
Quellen zum Nachlesen der Details: