Excel CSV-Import behandelt Zeichenfolgen in Zahlen als numerische Werte und nicht als Zeichenfolgen

13

Ich habe eine Webanwendung, die ihre Daten in eine CSV-Datei exportiert. Hier ist eine Beispielzeile der betreffenden CSV-Datei:

28,"65154",02/21/2013 00:00,"false","0316295","8316012,8315844","MALE"

Da ich kein Bild posten kann, muss ich die Ergebnisse in Excel erklären. Das Feld "0316295" wird in eine Zahl umgewandelt und die führende 0 verschwindet. Die "8316012,8315844" wird als eine einzige Zahl interpretiert: 83,160,128,315,844. Das ist offensichtlich nicht das beabsichtigte Ergebnis.

Ich habe gesehen, dass Leute für solche Fälle ein führendes einfaches Zitat empfehlen, aber das funktioniert auch nicht wirklich.

28,"65154",02/21/2013 00:00,"false","'0316295","'8316012,8315844","MALE"

Das einfache Anführungszeichen ist in der Zelle in Excel jederzeit sichtbar. Wenn ich jedoch selbst eine Zahl mit einem führenden einfachen Anführungszeichen eingebe, wird nur die beabsichtigte Zeichenfolge und nicht das einfache Anführungszeichen mit der Zeichenfolge angezeigt.

Importieren ist anscheinend nicht dasselbe wie Tippen.

Hat hier jemand eine Lösung?

Michael Oryl
quelle
Können Sie es mit LibreOffice oder etwas Ähnlichem importieren? Ich habe gerade importiert und bekommen: 28 65154 21.02.2013 00:00 false 0316295 8316012,8315844 MALE (wenn Sie das lesen können ...?)
FreudianSlip
Diese Frage ist ähnlich und bietet einige gute Lösungen: superuser.com/questions/234997/…
Brad Patton
@FreudianSlip Nein, wir können keine Lösung von Drittanbietern verwenden. Benutzer klicken auf die Schaltfläche "CSV herunterladen" und die Datei wird in Excel geöffnet. Das ist die Umgebung, mit der wir es zu tun haben. Kann es nicht wirklich komplizieren.
Michael Oryl
@Brad Ich habe diesen Beitrag früher gelesen und nach Lösungen gesucht. Dort habe ich die Option für einfache Anführungszeichen erhalten, die mir wirklich nicht gefällt, da Excel das Anführungszeichen beim Importieren aus CSV in der Zelle selbst anzeigt (auch wenn es nicht angezeigt wird, wenn Sie dasselbe in sich selbst eingeben).
Michael Oryl
Kontrollieren Sie also zumindest die Web-App? Wie werden Sie die Lösung für die Benutzer transparent implementieren? Ich habe meine Antwort aktualisiert, damit Werte mit Kommas richtig behandelt werden
Alex P.

Antworten:

10

Das sollte funktionieren

28,"65154",02/21/2013 00:00,"false",="0316295","=""8316012,8315844""","MALE"
Alex P.
quelle
Nein, das entstellt den Wert mit zwei Zahlen. Wir erhalten = "1234567 ohne abschließendes Zitat. Funktioniert jedoch für die einfacheren Zahlen.
Michael Oryl
1
Wenn Sie die Webanwendung steuern, können Sie den Export in das SYLK- Format ( en.wikipedia.org/wiki/SYmbolic_LinK_(SYLK) implementieren . Es hat eine viel bessere Kontrolle über die Datendarstellung. Wenn nicht - Sie könnten leicht ein Konverter-Skript
Alex P.
2
Die Antwort wurde aktualisiert, damit Werte mit Kommas richtig behandelt werden
Alex P.
Dadurch wurden die durch Kommas getrennten Werte ordnungsgemäß behandelt. Vielen Dank.
Michael Oryl
Vielen Dank. Diese Lösung löste ein Problem beim Importieren von Hexadezimalzahlen. Excel wird 00E3durch 0 (0 * 10 ^ 3) ersetzt und als Sci-Notation (0,00E + 00) angezeigt. Es macht tatsächlich das gleiche für "00e3"ohne die =. Funktioniert aber ="00e3"perfekt. (Öffnen einer CSV mit Excel 2010)
mpag
12

Um die führenden Nullen beizubehalten, können Sie das Format dieser bestimmten Spalte im Textimport-Assistenten auf Text festlegen.

  1. Starten Sie den Textimport-Assistenten, indem Sie zur Registerkarte Daten gehen und auf Von Text klicken .
  2. Wählen Sie die CSV-Datei aus, die Sie importieren möchten.
  3. Wählen Sie Begrenzt und klicken Sie auf Weiter .
  4. Deaktivieren Sie die Registerkarte (Standard). Wählen Sie Komma . Stellen Sie sicher, dass Text Qualifier auf eingestellt ist ". Klicken Sie auf Weiter .
  5. Hier können Sie die Formate festlegen . Klicken Sie auf die Überschrift der Spalte, deren führende Null (en) Sie beibehalten möchten. Wählen Sie Text . (Siehe Bild unten)

    Geben Sie hier die Bildbeschreibung ein

  6. Klicken Sie auf Fertig stellen und wählen Sie dann einen geeigneten Speicherort für Ihre Daten. Beispielergebnis:

    Geben Sie hier die Bildbeschreibung ein

Bearbeiten : Es gibt einen anderen Weg ; Lassen Sie die Web-App in eine durch Kommas getrennte TXT-Datei anstelle von CSV exportieren (oder ändern Sie nach dem Speichern einfach die Dateierweiterung der exportierten Datei). Dadurch wird Excel gezwungen, den Importassistenten beim Öffnen der Datei zu durchlaufen. Als zusätzlicher Vorteil wird die Wahrscheinlichkeit verringert, dass Benutzer Ihre ursprünglichen Rohdaten ändern oder manipulieren.

Ellesa
quelle
1
Ja, das stimmt sicherlich. Es ist für den Endbenutzer einfach nicht sehr praktisch, wenn er im Vergleich dazu nur auf den Link des CSV-Generators in unserer Web-App klicken muss und Excel ihn automatisch lädt - wenn auch mit den oben genannten Problemen. CSV-Dateien werden in Excel geöffnet, und Excel bietet derzeit keine Optionen. Es lädt sie nur. Ich weiß es zu schätzen, dass Sie darauf hingewiesen haben.
Michael Oryl
1
Es gibt einen anderen Weg, aber ich weiß nicht, ob dies in Ihrem Fall möglich ist: Lassen Sie die Web-App .TXTstattdessen durch Kommas getrennt exportieren .CSV(oder ändern Sie einfach die Dateierweiterung der exportierten Datei). Diese Art von "zwingt" Benutzer, den Importassistenten zu durchlaufen, wenn sie die Datei öffnen.
Ellesa
Das ist ein sehr guter Punkt. Vielen Dank für den Hinweis. Es könnte in Zukunft nützlich sein.
Michael Oryl
4

Excel behandelt numerische Werte, die mit einem Tabulatorzeichen beginnen, als Text.

<tabchar>000000100000200000,ABC,DEF

Erscheint als:

000000100000200000|ABC|DEF

| ist die Zellgrenze (zur Veranschaulichung). Wenn Ihr System beispielsweise die CSV-Datei mit dem Zeichensatz utf-8 generiert, können Sie das &#x0009;(Tabulatorzeichen in Hex) vor Ihrem numerischen Wert einfügen, um Excel zu zwingen, es als Text zu interpretieren.

Madeyedexter
quelle
Entfernen Sie das Leerzeichen vor dem Semikolon in der Hex-Darstellung. Ich weiß nicht, wie ich dem Hex-Tab-Zeichen in der Antwort entkommen soll, deshalb habe ich es absichtlich falsch eingegeben.
Madeyedexter
1
Ich habe die Flucht gemacht. Und ich habe etwas Neues gelernt, danke. Ich muss dies zu meinem Lieblingsthema für die Arbeit hinzufügen :)
Nixda
3

Excel erkennt das Format eines CSV-Felds automatisch, es sei denn, die CSV-Spalte hat dieses Format:

"=""Data Here"""

Dies funktioniert auch für Google Sheets

Chris Halcrow
quelle
0

Sie müssten die Funktion "Daten -> Externe Daten abrufen -> Text aus Datei importieren" in Excel verwenden, um sie als Text anzuzeigen. Dies ist der erwähnte Textimport-Assistent @Kaze.

Die einzige Möglichkeit, Excel zu zwingen, Zahlen als Text aus der Eingabe anzuzeigen, ohne dass der Benutzer etwas tun muss, besteht darin, eine Excel-Datei auszugeben und ein "benutzerdefiniertes Zahlenformat" anzugeben. Ich empfehle hierfür die Verwendung einer XLS-Exportbibliothek, da dies nicht so einfach zu sein scheint wie das Hinzufügen einer Zeile Konfigurationstext zu einer CSV-Datei.

Magne
quelle
0

Versuchen Sie die Bereinigungsfunktion für Werte, die durcheinander sind. Zum Beispiel = sauber ("12345678901234567890"). Es funktioniert für mich für Zahlen, Daten, Zeiten usw. Ich würde darauf hinweisen, dass dies möglicherweise nicht mehr mit neuen Versionen usw. funktioniert, da dies überhaupt nicht der Zweck dieser Funktion ist.

Mark Prather
quelle