Discussion:
CSV-Import mit Zeilenumbruch in der Zelle
(zu alt für eine Antwort)
Diedrich Ehlerding
2011-09-23 13:23:34 UTC
Permalink
[Excel 2007]

Moin,

ein eher kosmetisches Problem:

Ich möchte aus einem irgendwo auf einem Unixsystem laufenden Skript eine
CSV-Datei erzeugen, die ich dann später in Excel öffnen will. Es gibt
Zellen, in denen längerer Text stehen wird. Ich möchte erreichen, dass
dieser Text an bestimmter Stelle innerhalb der Zelle umbrochen wird.

Sowas kann man bei direkter Texteingabe erreichen, indem man mit
Alt+Return einen Zeilenumbruch innerhalb der Zelle erzwingt. Wenn man so
eine Exceltapete als CSV-Format speichert, dann enthält die CSV-Datei
ein CR (nicht CRLF). Ich habe daher versucht, die CSV-Datei in dieser
Form zu erzeugen - d.h. an entsprechender stelle ein CR anstatt eines
CRLF einzutragen - aber es geht nicht.

Konkret: meine Beispieltabelle enthielt in Zelle A1 das Wort "Text", in
Zelle A2 "Text mit(AltReturn)Umbruch"; das wird exportiert als

[HVR1975N] D:\Profiles\HVRDEHLE\My Documents>type Umbruch.csv
Text;"Text mit
Umbruch"

[HVR1975N] D:\Profiles\HVRDEHLE\My Documents>

wobei eben (nachgesehen per hex-Editor) zwischen "mit" und "Umbruch" nur
ein CR (0x0a) und kein CRLF (0x0a0d) steht.

Aber so etwas weigert Excel sich wieder einzulesen, bzw. er hört beim
\CR auf und vergisst daher alles hinter dem zelleninternen Zeilenumbruch.

Was tun?
Bernhard Sander
2011-09-23 14:33:59 UTC
Permalink
Hallo Diedrich,
Post by Diedrich Ehlerding
Ich möchte aus einem irgendwo auf einem Unixsystem laufenden Skript eine
CSV-Datei erzeugen, die ich dann später in Excel öffnen will. Es gibt Zellen, in
denen längerer Text stehen wird. Ich möchte erreichen, dass dieser Text an
bestimmter Stelle innerhalb der Zelle umbrochen wird.
Sowas kann man bei direkter Texteingabe erreichen, indem man mit Alt+Return
einen Zeilenumbruch innerhalb der Zelle erzwingt. Wenn man so eine Exceltapete
als CSV-Format speichert, dann enthält die CSV-Datei ein CR (nicht CRLF). Ich
habe daher versucht, die CSV-Datei in dieser Form zu erzeugen - d.h. an
entsprechender stelle ein CR anstatt eines CRLF einzutragen - aber es geht nicht.
Konkret: meine Beispieltabelle enthielt in Zelle A1 das Wort "Text", in
Zelle A2 "Text mit(AltReturn)Umbruch"; das wird exportiert als
[HVR1975N] D:\Profiles\HVRDEHLE\My Documents>type Umbruch.csv
Text;"Text mit
Umbruch"
[HVR1975N] D:\Profiles\HVRDEHLE\My Documents>
wobei eben (nachgesehen per hex-Editor) zwischen "mit" und "Umbruch" nur ein CR
(0x0a) und kein CRLF (0x0a0d) steht.
Aber so etwas weigert Excel sich wieder einzulesen, bzw. er hört beim \CR auf
und vergisst daher alles hinter dem zelleninternen Zeilenumbruch.
Es gibt zwar ziemlich viele Varianten von CSV-Formate, eines haben sie aber alle
gemeinsam: ein Zeilenende beendet den Datensatz. Insofern ist es unmöglich,
mehrzeilige Zelleninhalte in einer CSV-Datei zu speichern.
Abhilfe: verwende ein anderes Zeichen, evtl. ein Symbol aus mehreren Zeichen,
das sonst nicht im Text vorkommt und ersetze dieses Zeichen/Symbol nach dem
Einlesen durch einen Zeilenumbruch.

Nebenbei bemerkt: ein Zeilenende unter Unix ist üblicherweise nur das CR (0x0a).
Excel akzeptiert aber beide Varianten als Zeilenende.

Gruß
Bernhard Sander
Post by Diedrich Ehlerding
Was tun?
Wilfried
2011-09-26 08:35:24 UTC
Permalink
Post by Diedrich Ehlerding
[Excel 2007]
Ich möchte aus einem irgendwo auf einem Unixsystem laufenden Skript eine
CSV-Datei erzeugen, die ich dann später in Excel öffnen will. Es gibt
Zellen, in denen längerer Text stehen wird. Ich möchte erreichen, dass
dieser Text an bestimmter Stelle innerhalb der Zelle umbrochen wird.
Sowas kann man bei direkter Texteingabe erreichen, indem man mit
Alt+Return einen Zeilenumbruch innerhalb der Zelle erzwingt. Wenn man so
eine Exceltapete als CSV-Format speichert, dann enthält die CSV-Datei
ein CR (nicht CRLF). Ich habe daher versucht, die CSV-Datei in dieser
Form zu erzeugen - d.h. an entsprechender stelle ein CR anstatt eines
CRLF einzutragen - aber es geht nicht.
Konkret: meine Beispieltabelle enthielt in Zelle A1 das Wort "Text", in
Zelle A2 "Text mit(AltReturn)Umbruch"; das wird exportiert als
[HVR1975N] D:\Profiles\HVRDEHLE\My Documents>type Umbruch.csv
Text;"Text mit
Umbruch"
[HVR1975N] D:\Profiles\HVRDEHLE\My Documents>
wobei eben (nachgesehen per hex-Editor) zwischen "mit" und "Umbruch" nur
ein CR (0x0a) und kein CRLF (0x0a0d) steht.
Aber so etwas weigert Excel sich wieder einzulesen, bzw. er hört beim
\CR auf und vergisst daher alles hinter dem zelleninternen Zeilenumbruch.
Was tun?
Du hast offenbar CR und LF verwechselt:
CR ist 0x0d, LF ist 0x0a
Zeilenende ist CRLF 0x0d0a (für Textdateien in DOS und Windows).

Ich hab's in Excel 2010 ausprobiert.
- In der csv-Datei muss ein LF (0x0a) stehen, CR (0x0d) wird ignoriert.
- Man darf die csv-Datei nicht über "Daten - Externe Daten" importieren,
sonden nur über "Datei öffnen", dann geht es.

Grüße

--
Wilfried Hennings
bitte in der Newsgruppe antworten, die Mailadresse ist ungültig
Diedrich Ehlerding
2011-09-27 06:16:03 UTC
Permalink
Post by Wilfried
Ich hab's in Excel 2010 ausprobiert.
- In der csv-Datei muss ein LF (0x0a) stehen, CR (0x0d) wird ignoriert.
- Man darf die csv-Datei nicht über "Daten - Externe Daten" importieren,
sonden nur über "Datei öffnen", dann geht es.
Das war ja mein ursprünglicher Plan, aber mit Excel2007 geht das ofenbar
nicht. Dann werde ich wohl warten müssen, bis auf meinem (zentral
gemanageten) Büro-PC Office 2010 installiert wird. Wenn ich eine von
Excel2007 als CSV exportierte Datei (mit 0x0a) versuche über "öffnen" in
eben dieses Excel2007 einzulesen, wird der Rest hinter dem 0x0a ignoriert.

Diedrich
j***@gmx.de
2017-09-03 19:33:41 UTC
Permalink
Wenn auch Jahre später: hier noch eine Ergänzung. Alles oben geschriebene stimmt so... solange man eine amerikanische Lokalisierung verwendet. In der deutschen Lokalisierung ist aber der Default in .csv-Dateien mit einem Semikolon zu trennen (um die Erkennung von Dezimalzahlen zu erleichtern)

Lösung: in der ersten Zeile der .csv-Datei muss

sep=,

stehen!!!
s***@googlemail.com
2019-04-20 20:18:40 UTC
Permalink
Post by j***@gmx.de
Wenn auch Jahre später: hier noch eine Ergänzung. Alles oben geschriebene stimmt so... solange man eine amerikanische Lokalisierung verwendet. In der deutschen Lokalisierung ist aber der Default in .csv-Dateien mit einem Semikolon zu trennen (um die Erkennung von Dezimalzahlen zu erleichtern)
Lösung: in der ersten Zeile der .csv-Datei muss
sep=,
stehen!!!
Thanks so much! This helped. After an hour of trying and searching.
Lesen Sie weiter auf narkive:
Loading...