CSV-Import mit Zeilenumbruch in der Zelle

23/09/2011 - 15:23 von Diedrich Ehlerding | Report spam
[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?
 

Lesen sie die antworten

#1 Bernhard Sander
23/09/2011 - 16:33 | Warnen spam
Hallo Diedrich,

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

Was tun?

Ähnliche fragen