Toon posts:

[Visual Basic.Net] Data uit Excel - probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik gebruik de volgende code om data uit een Excel-file te lezen.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        Dim rs As ADODB.Recordset
        Dim cnn As ADODB.Connection
        Dim myPath As String
        Dim fld As ADODB.Field
        Dim fldCat As String

        rs = New ADODB.Recordset
        cnn = New ADODB.Connection

        myPath = "c:\test\test.xls"

        cnn.Open("Driver={Microsoft Excel Driver (*.xls)};DBQ=" & myPath & ";ReadOnly=1")
        rs.Open("SELECT * FROM [Sheet1$]", cnn)
        Do While Not rs.EOF
            For Each fld In rs.Fields
                ListBox1.Items.Add(fld.Value)
            Next
            'ListBox1.Items.Add(fldCat)
            rs.MoveNext()
        Loop


Dit werkt goed echter is er 1 probleem. De data van de eerste regel in de Excel-file wordt niet uitgelezen en dus ook niet getoond in de ListBox. Wat doe ik hier fout of moet ik dit anders doen. Ik heb al gezocht op dit probleem, maar kan er niets over vinden.

Verwijderd

Topicstarter
iemand die een oplossing heeft voor dit probleem?

Verwijderd

Het probleem zit hem er in dat de exceldriver die je gebruikt het eerste record ziet als een header record.

normaal gesproken zou je dit kunnen veranderen door in je cnn.open als ectra optie te geven :

code:
1
cnn.Open("Driver={Microsoft Excel Driver (*.xls)};DBQ=" & myPath & "; & myPath  ";ReadOnly=1;FirstRowHasNames=0;")


helaas zit er een bug in de driver : http://support.microsoft.com/kb/288343/EN-US/

een andere optie die je hebt is de OLEDB driver te gebruiken zie:

http://support.microsoft.com/kb/257819

dan moet je alleen in de connectionstring nog HDR=NO toevoegen :
code:
1
2
3
Provider = "Microsoft.Jet.OLEDB.4.0"
    .ConnectionString = "Data Source=C:\MyFolder\MyWorkbook.xls;" & _
"Extended Properties=Excel 8.0;HDR=NO"


that should do it.