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.
quelle
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.Antworten:
Excel ist unnützer Müll.
Lösung
Ich wäre ein wenig überrascht, wenn ein Kunde, der Ihre Daten in einem Excel-Format haben möchte, die sichtbare Formatierung dieser drei Spalten nicht in "Zahl" mit Null-Dezimalstellen oder in "Text" ändern könnte. Nehmen wir jedoch an, dass eine kurze Anleitung nicht in Frage kommt.
Ihre Möglichkeiten sind:
="268435459705526269","",="268435459705526269"
(Sie können sich auch="268435459705526269",,="268435459705526269"
2 Zeichen sparen). Dies hat den Vorteil, dass es korrekt angezeigt wird und wahrscheinlich allgemein nützlich ist, aber subtil unterbrochen wird (da es sich um Formeln handelt).Seien Sie vorsichtig mit Option 3, da einige Programme (einschließlich Excel und Open Office Calc) Kommas in
=""
Feldern nicht mehr als maskiert behandeln. Das bedeutet,="abc,xyz"
dass zwei Spalten überspannt werden und der Import abgebrochen wird.Die Verwendung des Formats von
"=""abc,xy"""
behebt dieses Problem, diese Methode beschränkt Sie jedoch aufgrund der Längenbeschränkung für Excel-Formeln weiterhin auf 255 Zeichen.quelle
Wir hatten ein ähnliches Problem, bei dem wir CSV-Dateien mit Spalten hatten, die Bereiche wie 3-5 enthielten, und Excel sie immer in Datumsangaben umwandelte, z. Wir kamen daran vorbei
Hier könnte man das Gleiche machen, würde ich denken.
Prost
quelle
Eine bessere Lösung ist das Generieren einer XML-Arbeitsmappe. So was:
Die Datei muss die Erweiterung .xml haben. Excel und OpenOffice öffnen es richtig.
quelle
Meine Lösung: Ich habe das gleiche Problem beim Importieren von Seriennummern. Sie müssen nicht als Zahlen behandelt werden, dh es werden keine mathematischen Funktionen ausgeführt, aber wir benötigen die gesamte Zahl darin. Das Einfachste, was ich habe, ist, ein Leerzeichen in die Seriennummer einzufügen. zB "12345678 90123456 1234". Wenn Excel es importiert, wird es als Text anstelle einer Zahl behandelt.
quelle
Ich hatte lange Kontonummern verstümmelt.
So habe ich es behoben:
Öffnen Sie die Datei file.csv in Libre Office / Open Office (möglicherweise müssen Sie Trennzeichen usw. angeben) und speichern Sie die Datei als Excel-XML-Datei.
Öffnen Sie dann diese Datei in Excel und Sie werden sehen, dass die Spalten nicht länger in ein wissenschaftliches Format oder was auch immer geändert werden. Klicken Sie aus Sicherheitsgründen mit der rechten Maustaste auf die Spalte, und legen Sie das Format explizit als Text fest. Speichern Sie es dann als Excel-Dateiformat.
Öffnen Sie die Excel-Formatdatei und die Spalte sollte noch in Ordnung sein!
quelle
Der Import-Assistent ist die beste Lösung für gelegentliche Benutzer und einmalige Situationen. Wenn Sie eine programmgesteuerte Lösung benötigen, können Sie die QueryTables.Add-Methode verwenden (die der Import-Assistent im Hintergrund verwendet).
quelle