vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Datenbanken · DataSet/DataTable   |   VB-Versionen: VB2005, VB200808.03.10
Excel-Dateien einfach auslesem mit OleDB

Eine einfache Funktion, mit der Excel-Dateien (.xls oder .xlsx) sehr einfach ausgelesen werden können.

Autor:   Joachim SiebertBewertung:     [ Jetzt bewerten ]Views:  23.522 
ohne HomepageSystem:  Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Nachfolgend eine einfache Funktion, mit der Excel-Dateien (.xls oder .xlsx) sehr einfach ausgelesen werden können. Die Daten werden hierbei in ein DataTable-Objekt geladen, sodass die Daten dann mit dem Namen der Überschriftszeile abgerufen werden können ...

Imports System.IO
Imports System.Data.OleDb
Function xls2Datatable(ByVal Dateiname As String, ByVal Blattname As String) As DataTable
  If File.Exists(Dateiname) = False Then Return Nothing
 
  Dim FileInfo As FileInfo = New FileInfo(Dateiname)
  Dim DT As New DataTable
 
  Dim oConn As OleDbConnection = New OleDbConnection
  If Dateiname.Contains(".xlsx") Then
    oConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
      "Data Source=" & Dateiname & ";" & _
      "Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
  Else
    oConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=" & Dateiname & ";" & _
      "Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
  End If
  oConn.Open()
 
  Dim cmd As OleDbCommand
  cmd = New OleDbCommand("SELECT * FROM [" & Blattname & "$]", oConn)
 
  Dim reader As OleDbDataReader = cmd.ExecuteReader( _
    CommandBehavior.KeyInfo Or CommandBehavior.CloseConnection)
  Dim schema As DataTable = reader.GetSchemaTable()
  Dim columns(schema.Rows.Count - 1) As DataColumn
  Dim column As DataColumn
 
  ' Build the schema for the table that will contain the data.
  For i As Integer = 0 To columns.GetUpperBound(0) Step 1
    column = New DataColumn
    With column
      .AllowDBNull = CBool(schema.Rows(i)("AllowDBNull"))
      .AutoIncrement = CBool(schema.Rows(i)("IsAutoIncrement"))
      .ColumnName = CStr(schema.Rows(i)("ColumnName"))
      .DataType = CType(schema.Rows(i)("DataType"), Type)
 
      If .DataType Is GetType(String) Then
        .MaxLength = CInt(schema.Rows(i)("ColumnSize"))
      End If
 
      .ReadOnly = CBool(schema.Rows(i)("IsReadOnly"))
      .Unique = CBool(schema.Rows(i)("IsUnique"))
    End With
    columns(i) = column
  Next i
 
  Dim data As New DataTable
  Dim row As DataRow
 
  data.Columns.AddRange(columns)
 
  ' Get the data itself.
  While reader.Read()
    row = data.NewRow()
 
    For i As Integer = 0 To columns.GetUpperBound(0)
      row(i) = reader(i)
    Next i
 
    data.Rows.Add(row)
  End While
 
  reader.Close()
  oConn.Close()
 
  Return data
End Function

Aufruf:

Dim DT As DataTable
DT = csv2Datatable("c:\Tabelle.xls", "Blatt1")
For Each dr As DataRow In DT.Rows
  TS = dr("ArtikelNummer") ' z.B. (Wert der Spalte "ArtikelNr")
  ' ... tu irgend was
Next 

Quellennachweis:
http://www.vbforums.com/showthread.php?t=381224

Dieser Tipp wurde bereits 23.522 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Aktuelle Diskussion anzeigen (9 Beiträge)

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel