Zelleninhalte aus Excel mit VB.Net

deusfalsus

Erfahrenes Mitglied
Hallo,

trotz intensiver Bemühungen per Suchfunktion muss ich noch doch fragen.

Ich benötige den Inhalt bestimmter Zellen einer Exceldatei. Genau genommen brauche ich ab der 5ten Zeile die zweite Spalte. In den Zeilen darüber liegen u.a. Buttons und Hinweise zur Datei.
Zwar haben hier alle PCs Office, aber ich würde es gern so programmieren, dass es auch auf PCs liefe, die kein Office installiert haben.

Mein erster Versuch war dieser:
Visual Basic:
Dim zeilen As New List(Of String)
Dim datei As New IO.StreamReader(Pfad, System.Text.Encoding.default)
While Not datei.EndOfStream
    zeilen.Add(datei.ReadLine())
End While
datei.Close()
datei.Dispose()
Allerdings kommen da nur kryptische Zeichen an und ich weiß nicht, wie ich an meine gewünschte Info komme.

Als zweites hatte ich es so probiert:
Visual Basic:
Dim cn As System.Data.OleDb.OleDbConnection
Dim cmd As System.Data.OleDb.OleDbDataAdapter
Dim ds As New System.Data.DataSet()

cn = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;" & _
    "data source=C:\myData.XLS;Extended Properties=Excel 8.0;")

' Select the data from Sheet1 of the workbook.
cmd = New System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", cn)

cn.Open()
cmd.Fill(ds)
cn.Close()
Aber ich weiß nicht, wie ich bei meiner Datei das sql-Statement formulieren soll.
 
Hallo deusfalsus,

über ADO.NET hatte ich das auch mal versucht und leider nicht
so richtig hinbekommen.

Eine weitere Lösung wäre über ADO

Schaue dir mal das Bsp. an.

Ursprünglich fürs schreiben gedacht, lesen ist selbsterklärend.

Code:
 Try

            Dim cn As Object = CreateObject("ADODB.Connection")
            Dim rs As Object = CreateObject("ADODB.Recordset")
            Dim rsC As Object = CreateObject("ADODB.Recordset")

            With cn
                .Provider = "Microsoft.Jet.OLEDB.4.0"
                .ConnectionString = "Data Source=deine Excel Datei.xls;" & _
                    "Extended Properties=Excel 8.0;"
                .Open()
            End With


            '// Felder schreiben
            Dim strQuery = "SELECT * FROM [Tabelle1$B2:B3]"
            rs.Source = strQuery
            rs.ActiveConnection = cn
            rs.locktype = 3
            rs.Open()
            rs.Fields(0).Value = kunr

           '// oder nur lesen
           MsgBox  (rs.Fields(0).Value) 

            rs.update()
            rs.close()

            
            cn.close()
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        End Try

Gruß
Jens
 

Neue Beiträge

Zurück