Hallo zusammen!
Ich habe da ein kleines Problem und finde einfach keine Lösung dazu. Vielleicht könnnt ihr mir ja weiterhelfen 😃
Folgende Situation:
Ich lege einen StreamWriter an um in eine csv-Datei Eintragungen vorzunehmen. Mit ";" kann ich in die nächste Spalte springen und um in die nächste Zeile zu gelangen kann ich Environment.NewLine oder mit writer.WriteLine arbeiten. Nun möchte ich aber gerne einen Zeilenumbruch innerhalb einer Zelle erzeugen.
Hier mal ein bisschen Code, damit ihr euch das vielleicht besser vorstellen könnt.
using (StreamWriter writer = new StreamWriter(Path.Combine(Application.StartupPath, "test.csv")))
{
writer.WriteLine(string.Format("Zeile 1{0}nächste Zeile;nächste Zelle", '\r'));
}
Egal ob ich \r oder \n übergeben, ich lande immer in der Zelle darunter. Als Ergebnis wäre es so wie in dem angehängten Bild gewünscht.
In Excel selbst ist der Zeilenumbruch innerhalb einer Zelle mit Alt+Enter möglich. Kann mir einer verraten, wie ich das mit C# erreichen kann?
Gruß,
IchRoque81
~ rock on ~
Unter Windows ist ein Zeilenumbruch immer CRLF, also \r\n sollte helfen.
**:::
\r\n ist ja das gleich wie Environment.NewLine, nur das Environment.NewLine Betriebssystemunabhängig ist.
Damit komm ich immer in die Zeile darunter. Also KEIN Zeilenumbruch INNERHALB der der Zelle 😉
~ rock on ~
Muss der Wert der Zelle eventuell in Hochkommas?
Hm ... ich würde sagen, du erstellst eine xls-Datei mit solcher Zelle und lese sie in C# ein. Im Debuger müsste man sehen können, was das für ein Trennzeichen ist.
**:::
@UnrealNemesiS:
Hast du dafür ein Beispiel? Bei mir bringt das irgendwie nix 😦
using (StreamWriter writer = new StreamWriter(Path.Combine(Application.StartupPath, "test.csv")))
{
writer.WriteLine(string.Format("'Zeile 1{0}nächste Zeile';nächste Zelle", "\r\n"));
}
@vbprogger:
Beim debuggen erhalt ich als string folgendes zurück:
q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0>\0\0\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\a\0\0\0\b\0\0\0\t\0\0\0
Damit kann ich leider nix anfangen. Im Original steht folgendes drin (Eingabe):
Zeile Alt+Enter umbruch
~ rock on ~
Also wenn dann müssen es bestimmt doppelte sein. Excel generiert mir folgende CSV-Datei:
mach mal so:
"Zeile 1
Zeile 2";"Zeile 1
Zeile 2";"Zeile 1
Zeile 2"
test;test;test
Wenn du mit Excel öffnest, müsstest du:
Zeile 1 | Zeile 1 | Zeil 1
Zeile 2 | Zeile 2 | Zeil 2
---------------------------
test | test | test
erhalten.
**:::
Sorry, aber ich sitz gerade irgendwie auf dem Schlauch. Könntet ihr mir ein passendes WriteLine-Beispiel geben?
~ rock on ~
using (StreamWriter sr = new StreamWriter(@"c:\test.csv"))
{
sr.WriteLine("\"Zeile 1\nZeile2\";\"Zeile 1\nZeile2\";\"Zeile 1\nZeile2\"");
sr.WriteLine("test;test;test");
}
**:::
StreamWriter sw = new StreamWriter(@"D:\1.csv");
sw.WriteLine("1");
sw.WriteLine("2");
sw.WriteLine("3");
sw.WriteLine("\"4\n5\"");
sw.WriteLine("6");
sw.Flush();
sw.Close();
Edit: Wieso macht der Editor automatisch Semikolons rein???
DANKE vbprogger!!! Jetzt hab ich verstanden, wie du es gemeint hast 😉
So. Jetzt geh ich ne Runde schlafen, damit ich von dem dicken Schlauch hier runter komm. Hoffentlich ist der morgen nicht wieder da 😄
Merci noch mal !!!
~ rock on ~