Moin!
Ich kann da auch Svens Abneigung nicht nachvollziehen. CSV ist ein Format, das einfach zu "handeln" ist, es ist menschenlesbar, es lässt sich, falls nötig, mit jedem Texteditor bearbeiten.
CSV hat keinerlei Möglichkeit, die Codierung zu kennzeichnen. Ist es ISO-8859-1, ist es Windows-1252, ist es gar UTF-8? Keiner weiß es, es läßt sich nicht innerhalb der Datei festlegen. Außerhalb - natürlich, per Konvention geht natürlich alles, aber darauf kann man sich eben nicht verlassen.
CSV hat keinerlei Möglichkeit, die verwendeten Trennzeichen innerhalb der Datei festzulegen. Auch hier gilt: Externe Konvention ist natürlich möglich, hilft aber im zweifel nicht viel. Man nehme nur mal die deutsche Excel-Version: Produziert lustig deutsches Zahlenformat mit Kommas als Dezimalzeichen und Semikolons als Trennzeichen, was absolut nicht harmoniert mit der englischen Excel-Version, die die Kommas als Trennzeichen erkennt, und mit den Semikolons absolut nichts anfangen kann.
Alleine schon die Idee, dass es multiple Trennzeichen geben kann, ist im Prinzip der Horror. Und dass es obendrein keine verpflichtenden Trennzeichen für die Feldinhalte gibt, verschlimmert die Sache nur noch.
Als generisches Speicher- und Datenaustauschformat ist CSV daher absolut unbrauchbar.
Als "letzte Rettung" zur Anwendung bei einer konkreten Applikation, deren CSV-Parameter bekannt sind oder erforscht werden können, kann man es mit Schmerzen verwenden.
Wenn es darum geht, konkret für Excel einen Export zu erstellen, wäre mein Ratschlag: Nimm eine HTML-Tabelle. Wenn die URL auf ".xls" lautet und mit den passenden Mime-Headern versehen wird, speichert der Browser den Download direkt passend bzw. lädt direkt das Excel-Plugin. Oder ein Doppelklick auf den Download öffnet die Datei direkt. Trennzeichen- und Codierungsprobleme treten nicht auf (passendes Meta-Element in die Datei packen). Wenn es sein muß, kann man sogar die Trennlinien in der Tabelle nett formatieren (ansonsten ist das hellgraue Raster leider etwas abwesend).
Alternativ ist XML als Datenaustauschformat definitiv vorzuziehen. Das ist mindestens genauso editorfreundlich, kann dabei aber intern wesentlich übersichtlicher daherkommen, und eliminiert sämtliche von mir angesprochenen Probleme, die CSV hat.
Dass eine CSV-Datei nur im Kontext der Anwendungen brauchbar ist, mit denen sie erzeugt und verarbeitet wird, ist logisch.
Das Problem ist eben: CSV ist nicht gleich CSV. Der Output des einen Programms ist inkompatibel zum Input des anderen Programms, und umgekehrt. Einfacher Datenaustausch sieht für mich anders aus.
- Sven Rautenberg
"Love your nation - respect the others."