Hallo,
ich möchte eine Excel-Tabelle automatisiert öffnen und verarbeiten. Das funktioniert auch bereits. Allerdings wird komischerweise eine Spalte falsch "erkannt" und wenn dort ein Textwert drin steht, dann ist dieser einfach nicht da. Anscheinend wird hier von VB ein falscher Datentyp (Double) dieser Spalte erkannt. Wie kann ich VB dazu zwingen, da dort Text zu erwarten ist. Sobald das Dataset gefüllt ist, ist die Eigenschaft leider schreibgeschützt, Vorher ändern habe ich auch nicht hinbekommen. Hat jemand eine Idee?
Wenn ich die Datei vorher herunterlade, mit Excel öffne und die Spalte als Text formatiere und wieder schließen, dann wird es übrigens korrekt erkannt. kann ich aber leider so nicht machen. Soll ja automatisch laufen.
ich möchte eine Excel-Tabelle automatisiert öffnen und verarbeiten. Das funktioniert auch bereits. Allerdings wird komischerweise eine Spalte falsch "erkannt" und wenn dort ein Textwert drin steht, dann ist dieser einfach nicht da. Anscheinend wird hier von VB ein falscher Datentyp (Double) dieser Spalte erkannt. Wie kann ich VB dazu zwingen, da dort Text zu erwarten ist. Sobald das Dataset gefüllt ist, ist die Eigenschaft leider schreibgeschützt, Vorher ändern habe ich auch nicht hinbekommen. Hat jemand eine Idee?
Wenn ich die Datei vorher herunterlade, mit Excel öffne und die Spalte als Text formatiere und wieder schließen, dann wird es übrigens korrekt erkannt. kann ich aber leider so nicht machen. Soll ja automatisch laufen.
VB.NET-Quellcode
- Public Shared Function ImportExceltoDatatable(filepath As String) As DataTable
- ' string sqlquery= "Select * From [SheetName$] Where YourCondition";
- Dim dt As New DataTable
- Try
- Dim ds As New DataSet()
- Dim constring As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & filepath & ";Extended Properties=""Excel 12.0;HDR=YES"""
- Dim con As New OleDbConnection(constring & "")
- con.Open()
- Dim myTableName = con.GetSchema("Tables").Rows(0)("TABLE_NAME")
- Dim sqlquery As String = String.Format("SELECT * FROM [{0}]", myTableName) ' "Select * From " & myTableName
- Dim da As New OleDbDataAdapter(sqlquery, con)
- da.Fill(ds)
- MsgBox(ds.Tables(0).Columns(0).DataType.ToString) '
- dt = ds.Tables(0)
- Return dt
- Catch ex As Exception
- MsgBox(Err.Description, MsgBoxStyle.Critical)
- Return dt
- End Try
- End Function
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- Dim client As New WebClient()
- ServicePointManager.Expect100Continue = True
- ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
- client.DownloadFile("https://www.xxx.de/export.xlsx", Application.StartupPath & "\Export.xlsx")
- Dim dt As DataTable
- dt = ImportExceltoDatatable(Application.StartupPath & "\Export.xlsx")
- DataGridView1.DataSource = dt
- DataGridView1.Visible = True
- End Sub
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Superuse“ ()