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.
quelle
Antworten:
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.
quelle
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.
quelle
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:
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:
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:
Hoffe das hilft jemandem.
quelle
=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 ??? )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!
quelle
Kurze Antwort
Entfernen Sie die Zeilenumbruch- / Zeilenvorschubzeichen (
\n
mit 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.quelle
\n
zwischen Zeilen und\r\n
Innenwerten. Letzteres wurde gerade in Notepad ++ entfernt.+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.
quelle
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"
quelle
Verwenden Sie Google Sheets und importieren Sie die CSV-Datei.
Dann können Sie das exportieren, um es in Excel zu verwenden
quelle
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!
quelle
In Notepad ++ einfügen, Codierung> In ANSI codieren auswählen, alles erneut kopieren und in Excel einfügen :)
quelle
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 -
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).
quelle
Meine Erfahrung mit Excel 2010 unter WinXP mit regionalen Einstellungen in Frankreich
quelle
Excel ist im Umgang mit CSVs unglaublich kaputt. LibreOffice macht einen viel besseren Job. Also fand ich heraus, dass:
quelle
Ü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:Installieren Sie dann csvkit in einer virtuellen Umgebung und geben Sie
csvjson
die Eingabedatei in unser Skript ein. Es ist eine gute Idee, das Erraten von Zelltypen mit dem folgenden-I
Argument zu deaktivieren :Jetzt
output.html
kann in Excel importiert werden. Zeilenumbrüche in Zellen bleiben erhalten.Optional möchten Sie möglicherweise Ihre virtuelle Python-Umgebung bereinigen:
quelle
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.
quelle
Was gerade für mich funktioniert hat, der Import in Excel direkt, vorausgesetzt, der Import erfolgt als Textformat statt als CSV-Format. M /
quelle
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.
quelle
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.
quelle
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)
quelle
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
.csv
with Numbers und exportieren Sie es nach Excel.quelle
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 öffnenquelle
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.
quelle
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:
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
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.
quelle