Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1550 | Anzahl registrierter User: 1841 | Besucher online: 10
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

CSV Datei in DataTable einlesen


Autor: Jan Welker
Sprache: C#
Bewertung:
5.44 (2 votes)
Anzahl der Aufrufe: 26357
  
Kick it on dotnet-kicks.de  

Beschreibung:

Liest eine CSV Datei aus und gibt den Inhalt in einer DataTable zurück.

benötigte Namespaces:
System.IO


Abgelegt unter: CSV, DataTable.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/// <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;
}
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

Weh Pung schrieb am:  12.02.2009 15:57:37

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


schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.