Feedback

C# - CSV Datei in DataTable einlesen

Veröffentlicht von am 21.01.2007
(2 Bewertungen)
Liest eine CSV Datei aus und gibt den Inhalt in einer DataTable zurück.

benötigte Namespaces:
System.IO
GFU-Schulungen  [Anzeige]

VB.NET Komplett

Sie stehen vo der Aufgabe, individuelle Anwendungen für Windows zu schreiben. Hier ist VB.NET die optimale Sprache. Sie erlernt sich recht leicht und passt sich komplett in die .NET Umgebung von Microsoft ein. Nach der Schulung entwickeln Sie anwenderfreundliche Programme in VB.NET . Mit den objektorientierten Modellen in VB.NET erzeugen Sie außerdem wiederverwendbare Komponenten.

XML und .NET Überblick

Um auf dem neuesten Wissensstand zu sein, sollten Sie unser aktuelles ASP .NET Komplett Seminar belegen.
Nach dem Seminar kennen Sie die wichtigsten Strömungen in der Software-Technologie

/// <summary>
/// Gibt den Inhalt einer CSV Datei in einer DataTable zurück
/// </summary>
/// <param name="path">Pfad der CSV Datei</param>
/// <param name="seperator">Zeichen mit dem die Spalten getrennt werden. Meist ';' oder ','</param>
/// <returns></returns>
private DataTable GetDataTable(string path, char seperator)
{
    DataTable dt = new DataTable();
    FileStream aFile = new FileStream(path, FileMode.Open);
    using (StreamReader sr = new StreamReader(aFile, System.Text.Encoding.Default))
    {
        string strLine = sr.ReadLine();
        string[] strArray = strLine.Split(seperator);

        foreach (string value in strArray)
            dt.Columns.Add(value.Trim());

        DataRow dr = dt.NewRow();

        while (sr.Peek() > -1)
        {
            strLine = sr.ReadLine();
            strArray = strLine.Split(seperator);
            dt.Rows.Add(strArray);
        }
    }
    return dt;
}
Abgelegt unter CSV, DataTable.

1 Kommentare zum Snippet

Weh Pung schrieb am 12.02.2009:
Der Code taugt natürlich nicht viel.

Er geht schief, wenn *Daten* den Seperator enthalten. Das ist laut RFC 4180 erlaubt, ebenso wie Daten, die einen Zeilenumbruch enthalten (hier geht obiger Code auch schief).

Eine brauchbare C#-CVS-Bibliothek, die mit dem CSV umgehen kann, dem man in der Realität begegnet - und zudem rasend schnell ist - findet man hier:
www.codeproject.com/KB/database/CsvReader.aspx

Beispiel-CSV aus der Wikipedia, welches schon schiefgeht:

Stunde;Montag;Dienstag;Mittwoch;Donnerstag;Freitag
1;Mathe;Deutsch;Englisch;Mathe;Kunst
2;Sport;"Religion ev;kath";Kunst;Deutsch;Kunst
 

Logge dich ein, um hier zu kommentieren!