Autor Beitrag
Oppi35
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95
Erhaltene Danke: 3



BeitragVerfasst: Do 25.11.10 17:04 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4799
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 25.11.10 18:24 
Greenberet
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 339
Erhaltene Danke: 20

Win 10
C# (VS 2012), C++ (VS 2012/GCC), PAWN(Notepad++), Java(NetBeans)
BeitragVerfasst: Fr 26.11.10 13:12 
Hier eine kleine Funktion die ich für CSVs verwende.

line = eine Zeile in der CSV Datei
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95
Erhaltene Danke: 3



BeitragVerfasst: 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