Antwort an „Der Martin“ verfassen

Hallo,

da hast Du natürlich recht - CSV ist ein Unfall, der darauf wartet, zu passieren.

sehr treffend formuliert. Also im Prinzip ähnlich wie TIFF im Bereich Grafikformate: Es gibt wohl einen Standard, aber der ist so schwammig und lässt viele Freiheiten, dass die Aussage "Programm foo kann TIFF-Dateien verarbeiten" nur unter streng kontrollierten Laborbedingungen verifizierbar ist.

Bloß - Excel ist das Lieblingsspielzeug aller Bürohengste (und -stuten) und wenn die Daten dort stehen, gibt es kaum eine andere Wahl.

Ich weiß. Als Ingenieur weiß ich Excel auch zu schätzen, bin dann aber auch immer wieder enttäuscht, wenn es an scheinbar selbstverständlichen Anforderungen scheitert.

Da hatte ich vor einiger Zeit eine Excel-Tabelle mit einem Messprotokoll: Spalte A war der Timestamp, Spalten B und C je ein Messwert, und in Spalte D sporadisch ein Kommentar zum Messwert (sowas wie "Einschaltstrom", "vermutlich Fehlmessung" oder "Sicherung hat ausgelöst").

Ich wollte daraus ein Diagramm erzeugen. Timestamp auf der X-Achse, die zwei Messwerte als zwei Kurven, und den Kommentar aus Spalte D als Text im Diagramm mit Marker an der passenden Stelle. Letzteres habe ich nicht geschafft. Im besten Fall kannst du von Hand Texte, Linien oder Marker ins fertige Diagramm malen. Die folgen dann aber natürlich nicht einer veränderten Skalierung oder so.

Ich habe jetzt nochmal mit einer CSV Datei statt einem String experimentiert - die Zeilenumbrüche funktionieren nicht gut. Weil EXCEL einen Zeilenumbruch in einer Zelle als \n speichert - das CSV Zeilenende dann als \r\n. Und ich kriege PHP nicht beigebracht, Zeilen ausschließlich bei CR+LF zu beenden. Geht das nicht?!

Nein, ich glaube nicht. Meines Wissens hat PHP da eine gewisse Pseudo-Intelligenz, die Zeilenumbrüche verschiedener Plattformen (Windows \r\n, Unixoide \n, ältere Äpfel \r) als gleichwertig zu erkennen.

Mit file_get_contents und explode auf \r\n, dann ein str_getcsv auf die Fragmente geht es. Brrr. Solange die CSV Datei nicht zu groß ist... Aber die Datei zeichenweise mit fgetc einlesen und die Zeilenenden selbst zu erkennen dürfte bei großen Dateien nicht praktikabel sein.

Ja, die Variante wäre mir auch eingefallen. Oder die Datei zeichenweise lesen und Zeichen sammeln bis zum \r\n, einzeln auftretende \n dabei einfach als Nutzzeichen durchreichen. Dürfte deutlich langsamer sein, aber wenig Speicher brauchen.

Einen schönen Tag noch
 Martin

--
Was ist der schnellste Weg von einem Suchtreffer zum nächsten?
Ein Googlehupf.
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

Ihre Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.

abbrechen