Entwickler-Ecke
IO, XML und Registry - CSV-Datei Delimiter in Text
Oppi35 - Do 25.11.10 17:04
Titel: CSV-Datei Delimiter in Text
Hallo Zusammen,
weiß jemand, wie man eine CSV Datei ausliest, die in einigen Spalten den gewählten Delimiter (Semikolon) enthält?
Der Text ist natürlich in Anführungszeichen eingeschlossen, also z.B. "2008; 2009".
Der String soll also genau so ausgelesen werden, dass die Zielvariable string x ="2008; 2009" lautet.
Viele Grüße aus Nürnberg
Frank
Greenberet - Fr 26.11.10 13:12
Hier eine kleine Funktion die ich für CSVs verwende.
line = eine Zeile in der CSV Datei
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| string[] CSVSplit(string line) { IList<string> ret = new List<string>(); StringBuilder sb = new StringBuilder(); bool inDoubleQuote = false; foreach (char c in line) { switch (c) { case '"': inDoubleQuote = !inDoubleQuote; break; case ',': if (inDoubleQuote) goto default; ret.Add(sb.ToString()); sb = new StringBuilder(); break; default: sb.Append(c); break; } } ret.Add(sb.ToString()); return ret.ToArray(); } |
Aber Achtung: Ich gehe in der Funktion davon aus, dass es sich um eine ECHTE CSV Datei handelt und nicht auf die Microsoft Variante.( Semicolon )
Oppi35 - Sa 27.11.10 00:06
Vielen Dank für die Antworten.
Der Code von Dir, Greenberet, ist perfekt.
Es handelt sich bei meinen CSV-Dateien natürlich um die Microsoft Variante mit Semikolon, aber das spielt ja hier nicht so die Rolle:))
Konkret geht es bei mir um Excel-Dateien, die im CSV Format gespeichert werden.
Denkbare wäre m.E. noch, dass Fehler entstehen können, wenn in einer Excel Datei in einer Zelle Anführungszeichen eingegeben werden. Aber da dies wohl nur sehr selten vorkommen wird, kann man dies auch mit einem Try-Catch Block abfangen und ggfs. gesondert behandeln bzw. einen Import verhindern.
Also vielen Dank für Deine Hilfe.
Gruß
Frank
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!