CSV-Dateien einlesen mit ADO.NET

Nachdem ich Euch vor kurzem demonstriert habe wie man den Inhalt eines Datagridviews in eine CSV-Datei schreiben kann, will ich Euch heute den Weg anders herum zeigen.

Mit ADO.NET kann man ja bekanntlich nicht nur auf die verschiedensten Datenbanken zugreifen.

Es ist auch auf einfachste Weise dabei möglich CSV-Dateien als Datencontainer zu nutzen.

Wie dies geht und was Ihr dabei noch bedenken solltet, zeige ich Euch in diesem Artikel.


Mit dem folgenden Connectionstring ist es möglich auf CSV-Dateien, welche mit txt oder csv enden, zuzugreifen:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\txtFilesFolder\;Extended Properties="text;HDR=Yes;FMT=Delimited";

Dabei ist aber auf folgendes zu Achtung: CSV-Dateien können unterschiedlich aufgebaut sein.

Da im Connectionstring aber keine weiteren Angaben zum Aufbau der Datei stehen, wird beim Lesen die Standard CSV-Definition des Systems genommen.

Diese findet Ihr in der Registry:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Jet \ 4.0 \ Engines \ Text

„Format“ = „Delimited(;)“

Leider ist dieses Format nicht auf jedem System gleich, so dass Ihr nie sicher sein könnt, wie diese Definition nun tatsächlich lautet.

Deshalb solltet Ihr in dem selben Pfad wie die CSV-Datei auch immer eine passende Schema.ini – Datei legen, damit beim Einlesen auch alles fehlerfrei funtioniert.

Wenn Ihr dann diese in dem Verzeichnis abgelegt habt, dann könnt Ihr mit dem obigen Connectionstring die Datei auch problemlos einlesen.

Zu Beachten ist dabei noch der Select-SQL, der als Tabellennamen den Dateinamen beinhaltet.

Aber seht selbst im folgenden Visual Basic Beispiel:

Private Sub CsvImport
 Dim constr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Folder\;Extended Properties=""text;HDR=Yes;FMT=Delimited"";"
 Dim SQL As String = "Select * From File.csv"
 Dim dt As New DataTable
 Dim conn As New OleDb.OleDbConnection(constr)
 Dim da As New OleDb.OleDbDataAdapter(SQL, conn)

 Try

  conn.Open()
  da.Fill(dt)
  conn.Close()
  DataGridView1.DataSource = dt

 Catch ex As Exception

 End Try
End Sub

Wie Ihr seht ist es wirklich einfach mit ADO.NET, und wie oben mit VB.NET, CSV-Dateien einzulesen, um sie dann in einem Datagridview anzuzeigen oder weiterzubearbeiten.

Wie es eigentlich mit Euch, arbeitet Ihr mit CSV-Dateien, um Daten auszutauschen, oder welche Formate nutzt Ihr?  – Vielleicht XML oder andere Formate?