CSV Dateien einlesen über OLE

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von MemoAnMichSelbst.

    CSV Dateien einlesen über OLE

    HI,

    ich versuche mich gerade daran, mehrere CSV-Dateien über OLE einzulesen. Ich stehe aber gerade auf dem Schlauch, wo ich die Codepage mitgeben kann. Hat hier schon jemand mit gearbeitet und weiß das?

    Ich hab zu Testzwecken aktuell nur ne Form mit nem Button1 und nem DatagridView1.
    Folgendes ist der Quellcode. Hab mal versucht ihn einigermaßen verständlich zu kommentieren.

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Data.Common
    3. Imports System.Data.OleDb
    4. Public Class Form1
    5. Private _Connection As DbConnection
    6. Private _DataTable As DataTable
    7. Private _ProviderFactory As DbProviderFactory
    8. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    9. Dim fbd As New FolderBrowserDialog
    10. Dim dataPath = ""
    11. If Not fbd.ShowDialog = DialogResult.OK Then Return
    12. dataPath = fbd.SelectedPath
    13. 'Aufbau der Verbindung zu den Dateien im Ordner
    14. _ProviderFactory = OleDbFactory.Instance
    15. _Connection = OleDbFactory.Instance.CreateConnection
    16. _Connection.ConnectionString = String.Concat("Provider=Microsoft.Jet.OLEDB.4.0; Extended Properties=""text;HDR=Yes;FMT=Delimited""; Data Source='", dataPath, "';")
    17. _Connection.Open()
    18. 'Neue DataTabel erstellen für die Daten des Filters. Nach dem Laden wird nur mit den DataTables gearbeitet!
    19. _DataTable = New DataTable
    20. Using adapter = _ProviderFactory.CreateDataAdapter, command = _ProviderFactory.CreateCommand
    21. adapter.SelectCommand = command
    22. command.Connection = _Connection
    23. 'Zugriff auf die Daten von M_Stueli.csv
    24. command.CommandText = "SELECT * FROM [M_Stueli#CSV]"
    25. 'Füllen der Daten des Selectcommands in die Data-Table
    26. adapter.Fill(_DataTable)
    27. End Using
    28. 'Anzeigen aller Daten des Selectcommands im Datagrid (rein zu Testzwecken)
    29. DataGridView1.DataSource = _DataTable
    30. 'Hier sehe ich dann, dass die Codepage nicht passt.
    31. _Connection.Close()
    32. End Sub
    33. End Class
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Moin,

    wenn du CSVs über Oledb einlesen willst, muss im Verzeichnis der CSV eine Schema.ini Datei liegen.

    Inhalt:

    VB.NET-Quellcode

    1. Dim SB_Schema As New StringBuilder
    2. With SB_Schema
    3. .AppendLine("[" & "Vollständiger Pfad zur CSV Datei" & "]")
    4. .AppendLine("Format=Delimited(;)")
    5. .AppendLine("ColNameHeader=False")
    6. End With


    Müsste bei dir möglicherweise angepasst werden.

    Mein Connection String dazu wäre ...

    Quellcode

    1. ​"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "Vollständiger Pfad ohne Dateiname" & ";Extended Properties=""Text;HDR=Yes;FMT=Delimited"";"


    ... und das Select SQL Command ...

    Quellcode

    1. ​" FROM " & "[" & "Datei Name ohne Pfad" & "]"
    ich würde es auch wie BlueLagoon mit einer schema.ini machen.
    du kannst aber versuchen CharacterSet einzutragen

    VB.NET-Quellcode

    1. _Connection.ConnectionString = String.Concat("Provider=Microsoft.Jet.OLEDB.4.0; Extended Properties=""text;characterset=65001;HDR=Yes;FMT=Delimited""; Data Source='", dataPath, "';")

    mit schema.ini

    VB.NET-Quellcode

    1. scon = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=D:\TestFolder;Extended Properties='Text;HDR=Yes;Schema=schema.ini;';"


    Hi,

    danke. Soweit klar. Das mit der INI wusste ich nicht.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D