web-dev-qa-db-de.com

Importieren von CSV mit Zeilenumbrüchen in Excel 2007

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, Zitate 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 setze und das Textqualifikationsmerkmal auf doppelte Anführungszeichen gesetzt habe, werden bei den Zeilenumbrüchen immer noch neue Datensätze an den Zeilenumbrüchen erstellt, bei denen ich das gesamte Textfeld in einer Zeile sehen würde Einzelzelle.

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

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

TIA,
- J

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

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

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

98
jeremyalan

Ich habe endlich das Problem gefunden!

Es stellt sich heraus, dass wir die Datei mit Unicode-Kodierung anstelle von ASCII oder UTF-8 geschrieben haben. Das Ändern der Kodierung auf dem FileStream scheint das Problem zu lösen.

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

24
jeremyalan

Excel (zumindest in Office 2007 unter XP) kann sich je nach dem Importieren einer CSV-Datei durch Öffnen über das Menü Datei-> Öffnen oder durch Doppelklicken auf die Datei im Explorer anders verhalten.

Ich habe eine CSV-Datei, die UTF-8-Kodierung enthält und in einigen Zellen Zeilenumbrüche enthält. Wenn ich diese Datei über das Menü Datei -> Öffnen von Excel öffne, wird der Assistent "CSV importieren" eingeblendet, und die Datei kann nicht korrekt importiert werden: Die Zeilenumbrüche beginnen mit einer neuen Zeile, selbst wenn sie in Anführungszeichen stehen. Wenn ich diese Datei durch Doppelklick in einem Explorer-Fenster öffne, wird sie ohne Eingreifen des Assistenten ordnungsgemäß geöffnet.

43
J Ashley

Keine der vorgeschlagenen Lösungen funktionierte für mich. 

Was funktioniert eigentlich (mit jeder Kodierung):

Daten aus csv-Datei kopieren/einfügen (im Editor öffnen), dann "Text in Spalten" ausführen -> funktioniert nicht.

Gehen Sie zum nächsten Tab und kopieren/einfügen Sie erneut (dasselbe, was Sie bereits in Ihrer Zwischenablage haben) -> funktioniert jetzt automatisch. 

29
sdplus

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

Wenn Sie jedoch mit Excel nicht weiterkommen und eine bessere Lösung benötigen, scheint es einen Weg zu geben. Es scheint ortsabhängig zu sein (was meiner bescheidenen Meinung nach idiotisch erscheint). Ich habe kein Excel 2007, aber ich habe Excel 2010 und folgendes 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 Kodierung auswählen. Ich habe UTF-8 wie vorgeschlagen gewählt, aber ohne Glück. Das Ändern der Kommas in Semikolons hat jedoch für mich funktioniert. Ich habe nichts anderes geändert und es hat einfach funktioniert. Also habe ich das Beispiel so geändert, dass es so aussieht und die UTF-8-Kodierung beim Speichern in Notepad gewählt hat:

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

Aber da ist ein Fang! Dies funktioniert nur, wenn Sie auf die CSV-Datei doppelklicken, um sie in Excel zu öffnen. Wenn ich versuche, Daten aus Text zu importieren und diese CSV-Datei zu wählen, schlagen die Zeilenumbrüche immer noch fehl.

Aber es gibt noch einen Fang! Das Trennzeichen für das Arbeitsfeld (im Originalbeispiel Komma, in meinem Fall Semikolon) scheint von den Ländereinstellungen des Systems abhängig zu sein (Einstellung unter Systemsteuerung -> Region und Sprache). In Norwegen ist Komma das Dezimaltrennzeichen. Excel scheint dieses Zeichen zu vermeiden und zieht stattdessen ein Semikolon vor. Ich habe Zugriff auf einen anderen Computer, der auf das englische Gebietsschema UK eingestellt ist. Auf diesem Computer funktioniert das erste Beispiel mit einem Komma-Trennzeichen einwandfrei (nur bei Doppelklick) und das Semikolon schlägt fehl! Soviel zur Interoperabilität. Wenn Sie diese CSV-Datei online veröffentlichen möchten und Benutzer möglicherweise über Excel verfügen, müssen Sie wahrscheinlich beide Versionen veröffentlichen und vorschlagen, dass die Benutzer prüfen, in welcher Datei die richtige Anzahl von Zeilen angegeben ist.

Alle Details, die ich sammeln konnte, um dies zu erreichen, sind also:

  1. Die Datei muss als UTF-8 mit einer Stückliste gespeichert werden, was Notepad bei der Auswahl von UTF-8 ausführt. Ich habe UTF-8 ohne BOM ausprobiert (kann problemlos in Notepad ++ gewechselt werden), aber das Doppelklicken auf das Dokument schlägt fehl.
  2. Sie müssen ein Komma oder ein Semikolon-Trennzeichen verwenden, nicht jedoch das Dezimaltrennzeichen in Ihren Ländereinstellungen. Vielleicht funktionieren andere Charaktere, aber ich weiß nicht welche.
  3. Sie müssen Felder angeben, 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.

22
ketil

Kurze Antwort

Entfernen Sie die Zeilenvorschub-/Zeilenvorschubzeichen (\n mit Notepad ++). Excel erkennt immer noch das Wagenrücklaufzeichen (\r), um Datensätze zu trennen.

Lange Antwort

Wie bereits erwähnt, werden Zeilenumbrüche in CSV-Feldern unterstützt, aber Excel behandelt sie nicht immer ordnungsgemäß. Ich hatte ein ähnliches Problem mit einem CSV eines Drittanbieters, bei dem möglicherweise Probleme mit dem Kodieren aufgetreten waren, das mit den Kodierungsänderungen jedoch nicht verbessert wurde.

Was für mich funktionierte, war das Entfernen aller Zeilenumbrüche (\n). Dies führt dazu, dass Felder in einem einzelnen Datensatz zusammengefasst werden, vorausgesetzt, dass Ihre Datensätze durch die Kombination eines Wagenrücklaufs und eines Zeilenvorschubs (CR/LF) voneinander getrennt sind. Excel importiert dann die Datei ordnungsgemäß und erkennt neue Datensätze anhand der Zeilenschaltung.

Offensichtlich ist es eine sauberere Lösung, zuerst die echten Zeilenumbrüche (\r\n) durch eine temporäre Zeichenkombination zu ersetzen, die Zeilenumbrüche (\n) durch Ihr getrenntes Zeichen (z. B. Komma in einer Semikolondatei) zu ersetzen und dann die temporären Zeichen erneut durch geeignete Zeilenumbrüche zu ersetzen .

6
Lilienthal

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

Gebrochen:
Name, Titel, Beschreibung 
"John", "Mr.", "Meine ausführliche Beschreibung"

Arbeiten:
Name, Titel, Beschreibung
"John", "Mr.", "Meine ausführliche Beschreibung"

5
Jeremy

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

  • Ein Zeilenvorschub ("\ n") in der Anführungszeichenfolge 

  • Ein Wagenrücklauf und ein Zeilenvorschub zwischen den Zeilen.

Z.B. "Test", "Multiline-Element\n Multiline-Element"\r\n "Test2", "Multiline-Element\n Multiline-Element"\r\n

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

4
Iventio

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

1) Installieren Sie LibreOffice 2) Öffnen Sie Calc und importieren Sie die Datei 3) In meiner txt-Datei wurden die Felder getrennt durch und die Zeichenfelder in "". 4) Speichern als ODS-Datei 5) Öffnen Sie ODS Datei in Excel 6) Speichern als .xls (x) 7) Fertig . 8) Das funktionierte perfekt für mich und rettete mich BIGTIME!

2
Rock Rico

Fügen Sie in Notepad ++ ein, wählen Sie Encoding> Encode in ANSI aus, kopieren Sie alle noch einmal und fügen Sie sie in Excel ein :)

2
Aaron Dake

Meine Erfahrung mit Excel 2010 unter WinXP mit französischen regionalen Einstellungen

  • das Trennzeichen Ihrer importierten csv muss dem Listentrennzeichen Ihrer regionalen Einstellungen entsprechen (; in meinem Fall)
  • sie müssen die Datei im Explorer doppelt anklicken. öffnen Sie es nicht aus Excel
2
pingouinshark

Ich hatte ein ähnliches Problem. Ich hatte einige Twitter-Daten in MySQL. Die Daten hatten Zeilenvorschub (LF oder\n) in den Daten. Ich hatte die Anforderung, die MySQL-Daten in Excel zu exportieren. Der LF hat meinen Import der CSV-Datei durcheinander gebracht. Also tat ich folgendes -

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, die Option "Erweitert" zu markieren (\ n,\r,\t ... Kontrollkästchen [siehe links unten im Dialogfeld)

1
Dibs

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

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

1
Mazzy

erstellen Sie einfach ein neues Blatt mit Zellen mit Zeilenumbruch, speichern Sie es in csv und öffnen Sie es mit einem Editor, der die Zeilenendezeichen (wie notepad ++) anzeigen kann. Dadurch werden Sie feststellen, dass ein Zeilenumbruch in einer Zelle mit LF codiert wird, während ein "reales" Zeilenende mit CR LF codiert wird. Voilà, jetzt wissen Sie, wie Sie eine "korrekte" CSV-Datei für Excel erstellen.

0
depassage

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

0
Martin

Dies funktionierte auf Mac unter Verwendung von csv und Ö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", "erste Zeile in Zelle c1\r 2. Zeile in Zelle c1"\n "erste Zeile Zelle a2 "\ n '

file.write (Daten)

0
2003G35

Zeilenumbrüche in Anführungszeichen sind laut CSV-Standard einwandfrei. .__ Die Analyse von Zeilenumbrüchen in Excel hängt von der Betriebssystemeinstellung des Listentrennzeichens ab:

  1. Windows: Sie müssen den List-Separator auf Komma setzen (Region und Sprache »Formate» Erweitert) Quelle: https://superuser.com/questions/238944/how-to-force-Excel-to-open -csv-dateien-mit-daten-in-spalten angeordnet # answer-633302

  2. Mac: Sie müssen die Region in den USA ändern (um dann andere Einstellungen manuell zu ändern) Quelle: https://answers.Microsoft.com/en-us/mac/forum/macoffice2016-macexcel/ Zeilentrennzeichen-Komma-Semikolon-in-Excel-2016-für/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 unter Verwendung der obigen Punkte in Max und Windows beheben.

0
David Avikasis

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

0
Ionut

Excel ist beim Umgang mit CSVs unglaublich fehlerhaft. LibreOffice macht einen viel besseren Job. So fand ich das heraus:

  • Die Datei muss in UTF-8 mit BOM codiert sein. Berücksichtigen Sie dies daher für alle folgenden Punkte
  • Das weitaus beste Ergebnis wird durch das Öffnen über den Datei-Explorer erzielt
  • 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 sehr stark von dem Dezimaltrennzeichen abhängig zu sein, das in den Ländereinstellungen des Betriebssystems .__
  • Ich würde wetten, dass es sich je nach Betriebssystem und __.Office-Version auch anders verhalten kann
0
GustavoMP

Ich hatte auch dieses Problem: dh, CSV-Dateien (durch Kommas getrennt, doppelte Anführungszeichen getrennt) mit LF in Anführungszeichen. Diese wurden Square-Dateien heruntergeladen. Ich habe einen Datenimport durchgeführt, aber nicht als Textdateien importiert, sondern als "aus HTML" importiert. Diesmal wurden die LF-Werte in den angegebenen Strings ignoriert.

0
user3861859

In meinem Fall öffne ich CSV in notepad ++ und füge SEP="," als erste Zeile hinzu, so kann ich CSV mit Zeilenumbrüchen und utf-8 in Excel ohne Probleme öffnen

0
adax2000

Versuchen Sie unter MacOS die Verwendung von Numbers

Wenn Sie Zugriff auf Mac OS haben, habe ich festgestellt, dass die Apple-TabelleNumberseine sehr gute Aufgabe hat, eine komplexe mehrzeilige CSV-Datei zu entfernen, die Excel nicht verarbeiten konnte. Öffnen Sie einfach den .csv mit Zahlen und exportieren Sie ihn nach Excel.

0
Tim