Ich habe eine Datenbank, die den Verkauf von Widgets anhand der Seriennummer verfolgt. Benutzer geben Käuferdaten und -mengen ein und scannen jedes Widget in ein benutzerdefiniertes Client-Programm. Sie schließen dann die Bestellung ab. Das alles funktioniert einwandfrei.
Einige Kunden möchten eine Excel-kompatible Tabelle der von ihnen gekauften Widgets. Wir generieren dies mit einem PHP-Skript, das die Datenbank abfragt und das Ergebnis als CSV mit dem Speichernamen und den zugehörigen Daten ausgibt. Das funktioniert auch sehr gut.
Wenn die Datei in einem Texteditor wie Notepad oder vi geöffnet wird, sieht sie folgendermaßen aus:
"Account Number","Store Name","S1","S2","S3","Widget Type","Date"
"4173","SpeedyCorp","268435459705526269","","268435459705526269","848 Model Widget","2011-01-17"
Wie Sie sehen, sind die Seriennummern vorhanden (in diesem Fall sind nicht alle sekundären Serien doppelt vorhanden) und bestehen aus langen Zahlenfolgen. Wenn diese Datei in Excel geöffnet wird, lautet das Ergebnis:
Account Number Store Name S1 S2 S3 Widget Type Date
4173 SpeedyCorp 2.68435E+17 2.68435E+17 848 Model Widget 2011-01-17
Wie Sie vielleicht bemerkt haben, werden die Seriennummern in doppelte Anführungszeichen gesetzt. Excel scheint Textqualifizierer in CSV-Dateien nicht zu berücksichtigen. Beim Importieren dieser Dateien in Access treten keine Schwierigkeiten auf. Beim Öffnen als Text kein Problem. Aber Excel wandelt diese Dateien ohne Zweifel in unnützen Müll um. Der Versuch, Endbenutzer in die Kunst des Öffnens einer CSV-Datei mit einer nicht standardmäßigen Anwendung einzuweisen, wird, sagen wir, mühsam. Gibt es hoffnung Gibt es eine Einstellung, die ich nicht finden konnte? Dies scheint bei Excel 2003, 2007 und 2010 der Fall zu sein.
Excel does not seem to respect text qualifiers in .csv files
- Die doppelten Anführungszeichen sind keine Textqualifizierer. Sie lassen lediglich Kommas in Ihren Daten zu. Wenn Sie in Ihren Daten keine Kommas verwenden, sind sie bedeutungslos . Alle Daten in einer CSV-Datei sind untypisiert, sodass Excel nur erraten kann, dass es sich bei Ihrer großen Seriennummer um eine Zahl handelt. In diesem Fall wird Excel mit einer maximalen Genauigkeit von 15 Stellen ausgeführt, wodurch Ihre Zahlen abgeschnitten werden.