Importieren von CSV mit Zeilenumbrüchen in Excel 2007

129

Ich arbeite an einer Funktion zum Exportieren von Suchergebnissen in eine CSV-Datei, die in Excel geöffnet werden soll. Eines der Felder ist ein Freitextfeld, das Zeilenumbrüche, Kommas, Anführungszeichen usw. enthalten kann. Um dem entgegenzuwirken, habe ich das Feld in doppelte Anführungszeichen (") gesetzt.

Wenn ich jedoch die Daten in Excel 2007 importiere, das entsprechende Trennzeichen und das Textqualifikationsmerkmal auf doppeltes Anführungszeichen setze, erstellen die Zeilenumbrüche immer noch neue Datensätze an den Zeilenumbrüchen, bei denen ich erwarten würde, dass das gesamte Textfeld in a angezeigt wird Einzelzelle.

Ich habe auch versucht, CR / LF (\ r \ n) durch nur CR (\ r) und wieder durch nur LF (\ n) zu ersetzen, aber kein Glück.

Ist jemand anderes auf dieses Verhalten gestoßen, und wenn ja, wie haben Sie es behoben?

TIA,
-J

EDIT:
Hier ist eine kurze Datei, die ich von Hand geschrieben habe, um das Problem zu duplizieren.

ID, Name, Beschreibung
"12345", "Smith, Joe", "Hey.
Mein Name ist Joe."

Wenn ich dies in Excel 2007 importiere, erhalte ich eine Kopfzeile und zwei Datensätze. Beachten Sie, dass das Komma in "Smith, Joe" ordnungsgemäß behandelt wird. Es sind nur die Zeilenumbrüche, die Probleme verursachen.

Jeremyyan
quelle
Ich habe mir die CSV-Datei in Notepad ++ angesehen und alles scheint korrekt zu sein. Ich habe andere Felder mit Kommas und sie werden ordnungsgemäß importiert. Es sind nur die Zeilenumbrüche, die Probleme verursachen.
Jeremyyan
4
Ich habe Probleme mit UTF8-CSV-Dateien mit mehrzeiligen Daten und Excel. Am Ende habe ich die Datei einfach in Google Text & Tabellen hochgeladen, sie in einem Google Sheet geöffnet und dann als XLS-Datei heruntergeladen. Funktioniert so gut für mich.
Creuzerm

Antworten:

53

Excel (zumindest in Office 2007 unter XP) kann sich unterschiedlich verhalten, je nachdem, ob eine CSV-Datei importiert wird, indem Sie sie über das Menü Datei-> Öffnen öffnen oder im Explorer auf die Datei doppelklicken.

Ich habe eine CSV-Datei, die in UTF-8-Codierung vorliegt und in einigen Zellen Zeilenumbrüche enthält. Wenn ich diese Datei über das Excel-Menü Datei-> Öffnen öffne, wird der Assistent "CSV importieren" angezeigt und die Datei kann nicht korrekt importiert werden: Die Zeilenumbrüche beginnen eine neue Zeile, auch wenn sie in Anführungszeichen stehen. Wenn ich diese Datei durch Doppelklicken in einem Explorer-Fenster öffne, wird sie ohne Eingreifen des Assistenten korrekt geöffnet.

J Ashley
quelle
1
Irgendeine Idee, wie man die gleichen Einstellungen wie beim Doppelklicken erhält?
Michiel Thalen
7
Es ist wahr! Wie merkwürdig.
David
5
Wenn Sie deutsche regionale Einstellungen verwenden, müssen Sie Semikolon (;) anstelle von Komma (,) in Ihrer CSV verwenden, damit der Doppelklick funktioniert ...
user1859022
3
es hat bei mir nicht funktioniert. Mit "," als Trennzeichen wurde mit Doppelklick alles in einer Spalte geöffnet. Mit ";" Als Trennzeichen wurde es korrekt importiert, mit Ausnahme der mehrzeiligen Textfelder, die als mehrere Datensätze importiert wurden. Ich habe Excel 2010
Andrej Adamenko
2
@ user1859022 Ich verdopple das für das ungarische Gebietsschema. Tatsächlich muss jedes Gebietsschema, das Komma als Dezimaltrennzeichen verwendet, Semikolon als Feldtrennzeichen verwenden, damit die Doppelklick-
CSV-Funktion
42

Keine der vorgeschlagenen Lösungen hat bei mir funktioniert.

Was funktioniert eigentlich (mit jeder Codierung):

Kopieren / Einfügen von Daten aus der CSV-Datei (im Editor öffnen), dann "Text in Spalten" ausführen -> funktioniert nicht, alles klar.

Gehen Sie zur nächsten Registerkarte und kopieren / fügen Sie sie erneut ein (dasselbe, was Sie bereits in Ihrer Zwischenablage haben) -> funktioniert jetzt automatisch.

sdplus
quelle
2
In meinem Fall hat dies in gewisser Weise funktioniert: Die CSV wurde korrekt auf die einzelnen Datensätze reduziert, aber alle Daten in einem Feld nach der neuen Zeile wurden entfernt.
Lilienthal
1
Das hat funktioniert, irgendwelche Ideen, warum es beim Importieren der CSV aus Excel nicht funktioniert?
Rafael Sisto
1
Ich kann bestätigen, dass dies funktioniert. Sie können sogar mehr Daten in verschiedene Blätter einfügen, ohne den Befehl "Text in Spalten" zu wiederholen. Dies ist nützlich, wenn Sie mehrere Dateien importieren müssen.
Alex
1
Warum funktioniert dies, aber weder das Öffnen der CSV noch das Hinzufügen als Textdaten mit allen richtigen Einstellungen funktioniert nicht? Danke für den Tipp. Das Copy / Paste-Team muss mit dem Datenimport-Team sprechen!
AlexGIS
2
Heilige Scheiße. das funktioniert wirklich. und es macht irgendwie Sinn warum. Beim Erstellen eines "Text in Spalten" merkt sich Excel die Einstellungen und es wird automatisch transformiert. Wenn Sie den Text bereits in Zeilen unterteilt haben, wird er zeilenweise angezeigt und neue Zeilen werden ignoriert. Ich denke, dass MS ein Kontrollkästchen einschließen sollte, um das Verhalten beizubehalten oder die Daten erneut zu scannen. Es ist mir egal, ... wenn Freaking funktioniert
user853710
28

Wenn Sie dies manuell tun, laden Sie LibreOffice herunter und importieren Sie Ihre CSV mit LibreOffice Calc. Es macht solche Dinge viel besser als jede andere Version von Excel, die ich ausprobiert habe, und es kann nach Bedarf in XLS oder XLSX gespeichert werden, wenn Sie danach nach Excel übertragen müssen.

Aber wenn Sie mit Excel nicht weiterkommen und eine bessere Lösung benötigen, scheint es einen Weg zu geben. Es scheint vom Gebietsschema abhängig zu sein (was meiner bescheidenen Meinung nach idiotisch erscheint). Ich habe kein Excel 2007, aber ich habe Excel 2010 und das gegebene Beispiel:

ID,Name,Description
"12345","Smith, Joe","Hey.
My name is Joe."

funktioniert nicht Ich habe es in Notepad geschrieben und Speichern unter ... gewählt. Neben der Schaltfläche Speichern können Sie die Codierung auswählen. Ich habe UTF-8 wie vorgeschlagen gewählt, aber ohne Glück. Das Ändern der Kommas in Semikolons hat für mich jedoch funktioniert. Ich habe nichts anderes geändert und es hat einfach funktioniert. Also habe ich das Beispiel so geändert und beim Speichern im Editor die UTF-8-Codierung gewählt:

ID;Name;Description
"12345";"Smith, Joe";"Hey.
My name is Joe."

Aber da ist ein Fang! Die einzige Möglichkeit besteht darin, auf die CSV-Datei zu doppelklicken, um sie in Excel zu öffnen. Wenn ich versuche, Daten aus Text zu importieren und diese CSV ausgewählt habe, schlägt dies in zitierten Zeilenumbrüchen immer noch fehl.

Aber es gibt noch einen anderen Haken! Das Arbeitsfeldtrennzeichen (im ursprünglichen Beispiel Komma, in meinem Fall Semikolon) scheint von den regionalen Einstellungen des Systems abzuhängen (eingestellt unter Systemsteuerung -> Region und Sprache). In Norwegen ist Komma das Dezimaltrennzeichen. Excel scheint dieses Zeichen zu vermeiden und bevorzugt stattdessen ein Semikolon. Ich habe Zugriff auf einen anderen Computer, der auf das englische Gebietsschema von UK eingestellt ist, und auf diesem Computer funktioniert das erste Beispiel mit einem Komma-Trennzeichen einwandfrei (nur bei Doppelklick), und das mit Semikolon schlägt tatsächlich fehl! Soviel zur Interoperabilität. Wenn Sie diese CSV online veröffentlichen möchten und Benutzer möglicherweise über Excel verfügen, müssen Sie wahrscheinlich beide Versionen veröffentlichen und den Benutzern empfehlen, zu überprüfen, welche Datei die richtige Anzahl von Zeilen enthält.

Alle Details, die ich sammeln konnte, um dies zum Laufen zu bringen, sind:

  1. Die Datei muss als UTF-8 mit einer Stückliste gespeichert werden. Dies ist der Vorgang, den Notepad bei Auswahl von UTF-8 ausführt. Ich habe UTF-8 ohne Stückliste ausprobiert (kann in Notepad ++ problemlos umgeschaltet werden), aber das Doppelklicken auf das Dokument schlägt fehl.
  2. Sie müssen ein Komma oder ein Semikolon-Trennzeichen verwenden, jedoch nicht das Dezimaltrennzeichen in Ihren regionalen Einstellungen. Vielleicht funktionieren andere Charaktere, aber ich weiß nicht welche.
  3. Sie müssen Felder in Anführungszeichen setzen, die eine neue Zeile mit dem Zeichen "enthalten".
  4. Ich habe Windows-Zeilenenden (\ r \ n) sowohl im Textfeld als auch als Datensatztrennzeichen verwendet, das funktioniert.
  5. Sie müssen auf die Datei doppelklicken, um sie zu öffnen. Das Importieren von Daten aus Text funktioniert nicht.

Hoffe das hilft jemandem.

Ketil
quelle
Auch der von @sdplus erwähnte Trick scheint zu funktionieren! Ich denke, was passiert, ist, dass Sie beim ersten Einfügen und Ausführen eines Manövers "Text in Spalten" das Anführungszeichen und das Feldtrennzeichen in Excel konfigurieren. Beim zweiten Einfügen wird diese Konfiguration verwendet und die Daten werden basierend auf der Konfiguration korrekt in Spalten aufgeteilt. Dies scheint jedoch ein sehr manueller Ansatz zu sein.
Ketil
Ja, jedes Mal, wenn Sie Text importieren oder einen Text in eine Spalte erstellen, kalibrieren Sie neu, wie das Kopieren / Einfügen in der angegebenen Sitzung funktioniert. Es wird sogar auf neue Arbeitsmappen angewendet, die Sie erstellen, bis Sie Excel schließen. es kann auch frustrierend sein. Sobald Sie ein bestimmtes Trennzeichen für den Import verwenden, wird Ihr Text dadurch getrennt, selbst wenn Sie nur einen Satz in eine Zelle einfügen möchten. Sie müssen den Import mit der Registerkarte als Trennzeichen wiederholen oder Excel neu starten, um ihn zu stoppen.
Robotik
Dein Trick scheint wirklich zu funktionieren. Aber es sieht so aus, als hätte das Semikolon nichts mit der Lösung zu tun. Das Problem ist, dass Excel CSV-Dateien je nach regionalen Einstellungen unterschiedlich behandelt. Ich komme aus Deutschland und für mich haben CSV-Dateien aus Excel immer Semikolons anstelle von Kommas (der Grund dafür ist, dass in Deutschland der Dezimaltrenner Komma anstelle von Punkt ist). Die wirkliche Lösung scheint zu sein, dass Excel CSV-Dateien völlig anders lädt als alle anderen Textdateien. CSV-Dateien, die Zeilenumbrüche zwischen Anführungszeichen enthalten, scheinen also zu funktionieren. Alle anderen Textdateien nicht.
Martini Bianco
@Martini, ja, ich habe norwegisches Excel und wir verwenden auch Komma als Dezimaltrennzeichen. Daher habe ich erwähnt, wie dies von den regionalen Einstellungen abhängt (obwohl ich es als Gebietsschema bezeichnet habe). Vielleicht sollte ich es aus Gründen der Klarheit umformulieren.
Ketil
Dies ist die Antwort für alle Personen in Regionen, in denen Komma das Dezimaltrennzeichen ist. Beachten Sie, dass Excel für diese Regionen auch Semikolon als Trennzeichen für Formelargumente verwendet ( =FOO(1;2)anstelle von =FOO(1,2)), aber es ist eindeutig falsch, dass Excel dies auf einen Dateiformat-Parser anwendet (welches andere Programm analysiert ein vom Gebietsschema abhängiges Standarddateiformat ??? )
Leemes
25

Ich habe endlich das Problem gefunden!

Es stellt sich heraus, dass wir die Datei mit Unicode-Codierung anstatt mit ASCII oder UTF-8 geschrieben haben. Das Ändern der Codierung im FileStream scheint das Problem zu lösen.

Vielen Dank an alle für all Ihre Vorschläge!

Jeremyyan
quelle
29
Die ASCII-Codierung schien das Problem für mich nicht zu beheben (allerdings unter MacOS), und ich habe keinen führenden Platz und mein Feld wird in Anführungszeichen gesetzt. Das exakt gleiche Dokument wird problemlos in Google Text & Tabellen importiert. Wie frustrierend. Übrigens gibt es keine "Unicode" -codierte Textdatei. Es muss eine der Implementierungen von Unicode sein (UTF-8, UTF-16, UTF-32 usw.)
Ben
11
Danke für die Lösung. Ich war immer noch neugierig, wie die Antwort lautet, also habe ich versucht, eine CSV mit einem Zeilenumbruch in Excel zu erstellen und zu sehen, was sie gespeichert hat. Es stellt sich heraus, dass Excel nur einen Zeilenvorschub für eine neue Zeile in einer Zelle verwendet. Wenn ich versuche, dieselbe CSV-Datei im Editor zu erstellen, wird für den Zeilenumbruch ein Zeilenvorschub + Wagenrücklauf verwendet. Stellen Sie daher für Zeilenumbrüche in einer einzelnen Zelle sicher, dass nur ein Zeilenvorschub (LF oder \ n) und kein Wagenrücklauf (CR oder \ r) verwendet wird. Excel verwendet beide, um eine Zeile zu beenden.
xr280xr
1
Die ASCII-Codierung hat das Problem auch für mich nicht
behoben
1
Speichern Sie unter OS X unter Macintosh als "Windows Comma Separated (csv)". Dies fügt Zeilenumbrüche anstelle von Zeilenumbrüchen hinzu. Es wird im Dropdown-Menü für Formate unter "Spezialformate" aufgeführt.
Taco
Welche Unicode-Codierung sollte verwendet werden (UTF-8, UTF-16)?
Andrej Adamenko
7

Kurze Antwort

Entfernen Sie die Zeilenumbruch- / Zeilenvorschubzeichen ( \nmit Notepad ++). Excel erkennt weiterhin das Wagenrücklaufzeichen ( \r), um Datensätze zu trennen.

Lange Antwort

Wie bereits erwähnt, werden Zeilenumbruchzeichen in CSV-Feldern unterstützt, aber Excel behandelt sie nicht immer ordnungsgemäß. Ich hatte ein ähnliches Problem mit einer CSV von Drittanbietern, die möglicherweise Codierungsprobleme hatte, sich jedoch durch Codierungsänderungen nicht verbesserte.

Was für mich funktioniert hat, war das Entfernen aller Zeilenumbrüche ( \n). Dies hat zur Folge, dass Felder zu einem einzigen Datensatz zusammengefasst werden, sofern Ihre Datensätze durch die Kombination aus Wagenrücklauf und Zeilenumbruch (CR / LF) getrennt sind. Excel importiert dann die Datei ordnungsgemäß und erkennt neue Datensätze am Wagenrücklauf.

Offensichtlich besteht eine sauberere Lösung darin, zuerst die echten Zeilenumbrüche ( \r\n) durch eine temporäre Zeichenkombination zu ersetzen, die Zeilenumbrüche ( \n) durch ein separates Zeichen Ihrer Wahl (z. B. Komma in einer Semikolon-Datei) zu ersetzen und dann die temporären Zeichen erneut durch geeignete Zeilenumbrüche zu ersetzen.

Lilienthal
quelle
1
Ich hatte die gegenteilige Situation: \nzwischen Zeilen und \r\nInnenwerten. Letzteres wurde gerade in Notepad ++ entfernt.
Erst
5

+1 auf J Ashleys Kommentar. Ich bin auch auf dieses Problem gestoßen. Es stellt sich heraus, dass Excel Folgendes erfordert:

  • Ein Zeilenumbruchzeichen ("\ n") in der Zeichenfolge in Anführungszeichen

  • Ein Wagenrücklauf und eine neue Zeile zwischen jeder Zeile.

ZB "Test", "Mehrzeiliges Element \ n Mehrzeiliges Element" \ r \ n "Test2", "Mehrzeiliges Element \ n Mehrzeiliges Element" \ r \ n

Ich habe Notepad ++ verwendet, um jede Zeile richtig abzugrenzen und nur Zeilenumbrüche in der Zeichenfolge zu verwenden. Dies wurde entdeckt, indem mehrzeilige Einträge in einem leeren Excel-Dokument erstellt und die CSV in Notepad ++ geöffnet wurden.

Iventio
quelle
Es funktionierte für mich nur mit Newline-Zeichen als mehrzeiliges Element und als Zeilentrennzeichen, sobald ich das Feldtrennzeichen gemäß meinem Gebietsschema eingestellt hatte
Robotik
4

Wenn das Feld ein führendes Leerzeichen enthält, ignoriert Excel das doppelte Anführungszeichen als Textqualifizierer. Die Lösung besteht darin, führende Leerzeichen zwischen Komma (Feldtrennzeichen) und Anführungszeichen zu entfernen. Beispielsweise:

Gebrochen:
Name, Titel, Beschreibung
"John", "Mr.", "Meine detaillierte Beschreibung"

Arbeiten:
Name, Titel, Beschreibung
"John", "Mr.", "Meine detaillierte Beschreibung"

Jeremy
quelle
2
Ich bin damit einverstanden, dass meine Ausgabe keine führenden Leerzeichen enthält. Irgendwelche Ideen?
Jeremyyan
Wir müssen die Linie gebrochen haben :(
Luke
4

Verwenden Sie Google Sheets und importieren Sie die CSV-Datei.

Dann können Sie das exportieren, um es in Excel zu verwenden

Mazzy
quelle
1
Guter Tipp! Dies ist die bequemste Konvertierungsmethode, wenn Sie Ihre CSV-Datei in einen Drittanbieter-Service (dh nicht vertrauliche Daten) hochladen können. Beachten Sie, dass Sie das Trennzeichen beim Importieren möglicherweise manuell festlegen müssen. Möglicherweise müssen Sie die Zellengröße in der resultierenden Excel-Datei anpassen, damit sie korrekt angezeigt wird.
M000
Funktioniert auch mit Excel in Office 365 in einem Browser. Ich konnte eine CSV mit Zeilenumbrüchen innerhalb von Zellen mit der Desktop-Excel-Anwendung nicht ordnungsgemäß öffnen (ich habe die meisten Vorschläge auf dieser Seite ausprobiert), aber Excel auf office.com konnte sie ordnungsgemäß öffnen.
georg w.
3

Wenn jemand über diesen Thread stolpert und nach einer endgültigen Antwort sucht, dann geht das (Dank an die Person, die LibreOffice erwähnt:

1) Installieren Sie LibreOffice. 2) Öffnen Sie Calc und importieren Sie die Datei. 7) Fertig. 8) Das hat perfekt für mich funktioniert und mich GROSS gerettet!

Rock Rico
quelle
3
LibreOffice muss nicht als ODS speichern,
sondern
2

In Notepad ++ einfügen, Codierung> In ANSI codieren auswählen, alles erneut kopieren und in Excel einfügen :)

Aaron Dake
quelle
2

Ich hatte ein ähnliches Problem. Ich hatte einige Twitter-Daten in MySQL. Die Daten hatten Zeilenvorschub (LF oder \ n) mit in den Daten. Ich musste die MySQL-Daten nach Excel exportieren. Der LF hat meinen Import von CSV-Dateien durcheinander gebracht. Also habe ich folgendes gemacht -

1. From MySQL exported to CSV with Record separator as CRLF
2. Opened the data in notepad++ 
3. Replaced CRLF (\r\n) with some string I am not expecting in the Data. I used ###~###! as replacement of CRLF
4. Replaced LF (\n) with Space
5. Replaced ###~###! with \r\n, so my record separator are back.
6. Saved and then imported into Excel

HINWEIS - Vergessen Sie beim Ersetzen von CRLF oder LF nicht, das Kontrollkästchen "Erweitert" zu aktivieren (\ n, \ r, \ t ... Kontrollkästchen [siehe links unten im Dialogfeld).

Dibs
quelle
2

Meine Erfahrung mit Excel 2010 unter WinXP mit regionalen Einstellungen in Frankreich

  • Das Trennzeichen Ihrer importierten CSV muss dem Listentrennzeichen Ihrer regionalen Einstellungen entsprechen (in meinem Fall).
  • Sie müssen im Explorer auf die Datei doppelklicken. Öffnen Sie es nicht aus Excel
Pingouinshai
quelle
1

Excel ist im Umgang mit CSVs unglaublich kaputt. LibreOffice macht einen viel besseren Job. Also fand ich heraus, dass:

  • Die Datei muss in UTF-8 mit Stückliste codiert sein. Berücksichtigen Sie dies für alle folgenden Punkte
  • Das mit Abstand beste Ergebnis wird erzielt, wenn Sie es im Datei-Explorer öffnen
  • Wenn Sie es in Excel öffnen, gibt es zwei mögliche Ergebnisse:
    • Wenn es nur ASCII-Zeichen enthält, funktioniert es höchstwahrscheinlich
    • Wenn es Nicht-ASCII-Zeichen enthält, werden Ihre Zeilenumbrüche durcheinander gebracht
  • Es scheint stark vom Dezimaltrennzeichen abhängig zu sein, das in den regionalen Einstellungen des Betriebssystems konfiguriert ist. Sie müssen also das richtige auswählen
  • Ich würde wetten, dass es sich je nach Betriebssystem und Office-Version auch unterschiedlich verhalten kann
nicht definiert
quelle
Sie behaupten, LibreOffice sei eine bessere Vermutung als Excel, oder? Excel stellt beim Importieren von Textdateien die richtigen Fragen, es sei denn, Sie raten dazu.
Tom Blodget
1
Danke! Es hilft mir, meine CSV von Notepad ++ von "UTF-8 ohne Stückliste" in "UTF-8 mit Stückliste" (nur einfaches "UTF-8" im Menü) zu konvertieren. Dann habe ich es einfach aus dem Explorer geöffnet und Excel hat es richtig angezeigt, mit korrekten Symbolen und korrekten Zeilenumbrüchen in Zellen. Als ich es in der Standardcodierung "UTF-8 ohne Stückliste" aus Explorer Excel geöffnet habe, wurden Zeilenumbrüche korrekt importiert, aber nicht-lateinische Symbole werden falsch angezeigt. Wenn ich es aus Excel geöffnet habe, wurde die Codierung richtig angezeigt, aber Zeilenumbrüche wurden nicht bewältigt.
Sergey Beloglazov
1

Überblick

Fast 10 Jahre nach dem ursprünglichen Beitrag hat sich Excel beim Importieren von CSV-Dateien nicht verbessert. Ich fand jedoch, dass es beim Importieren von HTML-Tabellen viel besser ist. Man kann also Python verwenden, um CSV in HTML zu konvertieren und dann das resultierende HTML in Excel zu importieren.

Die Vorteile dieses Ansatzes sind: (a) er funktioniert zuverlässig, (b) Sie müssen Ihre Daten nicht an einen Drittanbieter senden (z. B. Google Sheets), (c) es sind keine zusätzlichen "fetten" Installationen erforderlich (LibreOffice, Zahlen usw.) für die meisten Benutzer, (d) höhere Stufe als Einmischung in CR / LF-Zeichen und Stücklistenmarkierungen, (e) keine Notwendigkeit, mit den Gebietsschemaeinstellungen herumzuspielen.

Schritte

Die folgenden Schritte können auf jeder Bash-ähnlichen Shell ausgeführt werden, solange Python 3 installiert ist. Obwohl Python zum direkten Lesen von CSV verwendet werden kann, wird csvkit verwendet, um eine Zwischenkonvertierung in JSON durchzuführen . Auf diese Weise können wir vermeiden, dass wir uns mit CSV-Komplikationen in unserem Python-Code befassen müssen.

Speichern Sie zunächst das folgende Skript als json2html.py. Das Skript liest eine JSON-Datei aus stdin und speichert sie als HTML-Tabelle:

#!/usr/bin/env python3
import sys, json, html

if __name__ == '__main__':
    header_emitted = False
    make_th = lambda s: "<th>%s</th>" % (html.escape(s if s else ""))
    make_td = lambda s: "<td>%s</td>" % (html.escape(s if s else ""))
    make_tr = lambda l, make_cell: "<tr>%s</tr>" % ( "".join([make_cell(v) for v in l]) )
    print("<html><body>\n<table>")
    for line in json.load(sys.stdin):
        lk, lv = zip(*line.items())
        if not header_emitted:
            print(make_tr(lk, make_th))
            header_emitted = True
        print(make_tr(lv, make_td))
    print("</table\n</body></html>")

Installieren Sie dann csvkit in einer virtuellen Umgebung und geben Sie csvjsondie Eingabedatei in unser Skript ein. Es ist eine gute Idee, das Erraten von Zelltypen mit dem folgenden -IArgument zu deaktivieren :

$ virtualenv -p python3 pyenv
$ . ./pyenv/bin/activate
$ pip install csvkit
$ csvjson -I input.csv | python3 json2html.py > output.html

Jetzt output.htmlkann in Excel importiert werden. Zeilenumbrüche in Zellen bleiben erhalten.

Optional möchten Sie möglicherweise Ihre virtuelle Python-Umgebung bereinigen:

$ deactivate
$ rm -rf pyenv
m000
quelle
1

Dies ist für Excel 2016:

Hatte gerade das gleiche Problem mit Zeilenumbrüchen in einer CSV-Datei mit dem Excel-Assistenten.

Danach habe ich es mit der Funktion "Neue Abfrage" versucht: Daten -> Neue Abfrage -> Aus Datei -> Aus CSV -> Wählen Sie die Datei -> Importieren -> Laden

Es hat perfekt funktioniert und eine sehr schnelle Problemumgehung für alle von Ihnen, die das gleiche Problem haben.

SaSH_17
quelle
0

Was gerade für mich funktioniert hat, der Import in Excel direkt, vorausgesetzt, der Import erfolgt als Textformat statt als CSV-Format. M /

Martin
quelle
0

Erstellen Sie einfach ein neues Blatt mit Zellen mit Zeilenumbruch, speichern Sie es in CSV und öffnen Sie es mit einem Editor, der die Zeichen am Zeilenende anzeigen kann (z. B. Editor ++). Auf diese Weise werden Sie feststellen, dass ein Zeilenumbruch in einer Zelle mit LF codiert ist, während ein "echtes" Zeilenende mit CR LF codiert ist. Voilà, jetzt wissen Sie, wie man eine "richtige" CSV-Datei für Excel generiert.

Depassage
quelle
0

Ich hatte auch dieses Problem: dh CSV-Dateien (durch Kommas getrennte, durch doppelte Anführungszeichen getrennte Zeichenfolgen) mit LF in Zeichenfolgen in Anführungszeichen. Diese wurden Square-Dateien heruntergeladen. Ich habe einen Datenimport durchgeführt, aber anstatt als Textdateien zu importieren, wurde er als "aus HTML" importiert. Diesmal wurden die LFs in den angegebenen Zeichenfolgen ignoriert.

user3861859
quelle
0

Dies funktionierte auf einem Mac mit CSV und dem Öffnen der Datei in Excel.

Verwenden von Python zum Schreiben der CSV-Datei.

data = '"erste Zeile der Zelle a1 \ r 2. Zeile in Zelle a1 \ r 3. Zeile in Zelle a1", "Zelle b1", "1. Zeile in Zelle c1 \ r 2. Zeile in Zelle c1" \ n "erste Zeile in Zelle a2 "\ n '

file.write (Daten)

2003G35
quelle
0

Versuchen Sie unter MacOS, Zahlen zu verwenden

Wenn Sie Zugriff auf Mac OS Ich haben habe festgestellt , dass die Apple - Tabelle Zahlen machen einen guten Job eine komplexe mehrzeiligen CSV - Datei von unpicking , dass Excel nicht umgehen kann. Öffnen Sie einfach das .csvwith Numbers und exportieren Sie es nach Excel.

Tim
quelle
0

In meinem Fall kann ich durch Öffnen von CSV in Notepad ++ und Hinzufügen SEP=","als erste Zeile CSV mit Zeilenumbrüchen und utf-8 in Excel ohne Probleme öffnen

adax2000
quelle
0

Ersetzen Sie das Trennzeichen durch TAB (\ t) anstelle von Komma (,). Öffnen Sie dann die Datei in Ihrem Editor (Editor usw.), kopieren Sie den Inhalt von dort und fügen Sie ihn in die Excel-Datei ein.

Ionut
quelle
Versuchen Sie dies auf großen Dateien :)
Chukko
-1

Zeilenumbrüche in doppelten Anführungszeichen sind gemäß CSV-Standard vollkommen in Ordnung. Das Parsen von Zeilenumbrüchen in Excel hängt von der Betriebssystemeinstellung des Listentrennzeichens ab:

  1. Windows: Sie müssen den Listentrenner auf Komma setzen (Region und Sprache »Formate» Erweitert). Quelle: /superuser/238944/how-to-force-excel-to-open-csv-files- mit-Daten-in-Spalten angeordnet # answer-633302

  2. Mac: Sie müssen die Region in US ändern (und dann andere Einstellungen manuell nach Ihren Wünschen ändern). Quelle: https://answers.microsoft.com/en-us/mac/forum/macoffice2016-macexcel/line-separator-comma -semicolon-in-excel-2016-for / 7db1b1a0-0300-44ba-ab9b-35d1c40159c6 (siehe NewmanLees Antwort)

Vergessen Sie nicht, Excel vollständig zu schließen, bevor Sie es erneut versuchen.

Ich habe das Problem erfolgreich repliziert und konnte es mit den oben genannten Problemen sowohl in Max als auch in Windows beheben.

David Avikasis
quelle
Ich denke nicht, dass das funktioniert. Ich habe eine CSV mit Zeilenumbrüchen in Zellen aus Excel selbst exportiert. Da sich das Gebietsschema nicht geändert hat, sollte Excel es korrekt laden können. Aber es kann nicht. Es bringt immer noch die Zeilenumbrüche in den Zellen durcheinander.
M000