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


Th69 - Do 25.11.10 18:24

Versuche mal diese Klasse: http://www.codeproject.com/KB/database/CsvReader.aspx


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