2010-11-13 22 views
0

À l'origine j'utilisais Office Interop pour importer des données, mais c'était un mal de tête et demi pour moi et mon ordinateur. En ce moment j'essaye de le charger avec ACE, mais ma grille de données n'est pas remplie. Une fois que c'est opérationnel, j'ai besoin de savoir comment utiliser ces données d'autres façons, et comment saisir des cellules spécifiques de données à partir de ce DataSet. J'utilise Visual Studio 2008, au fait.Comment utiliser ACE OLEDB pour importer des données Excel dans VB?

En ce moment, j'ai ...

Public Function funcUpdate(ByVal sFileLoc As String) As Boolean 
    'Determine connection string properties 
    Dim dbProperty As String 
    If updFileExt = ".xlsx" Then 
     dbProperty = "Excel 12.0 Xml;HDR=No" 
    ElseIf updFileExt = ".xls" Then 
     dbProperty = "Excel 12.0;HDR=No" 
    Else 
     MessageBox.Show("FATAL: File type error on updater", "OHGAWDNO", MessageBoxButtons.OK, MessageBoxIcon.Error) 
     updateTerm() 
     Return False 
    End If 
    Dim dbConn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & updFile & ";Extended Properties=" & dbProperty & ";") 
    Dim dbCommand As New OleDb.OleDbDataAdapter("select * from [sheet1$]", dbConn) 
    Dim dtSet As New DataSet 
    Try 
     dbCommand.TableMappings.Add("Table", "ExcelTest") 
     dbCommand.Fill(dtSet) 
     Form1.DataGrid1.DataSource = dtSet.Tables(0) 
    Catch exlErr As Exception 
    Finally 
     dbConn.Close() 
    End Try 

    updateTerm() 
End Function 
+0

L'ensemble de données est-il correctement rempli? – YWE

+0

Je ne sais pas trop comment le dire. –

+0

J'ai supprimé la capture d'exception et trouvé qu'il y avait un problème dans ma chaîne de connexion (pas de "" autour du nom de fichier et des propriétés), mais la grille de données n'est toujours pas remplie. –

Répondre

0

Essayez de le faire.

Dim path As String = "c:\example.xlsx" 
Dim constr As String = [String].Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0 Xml;" & _ 
              "HDR=YES;IMEX=1;""", path) 
Dim adapter As New OleDbDataAdapter 
Using cn As New System.Data.OleDb.OleDbConnection(constr) 

     Try 
      cmdselcet = New OleDbCommand("SELECT * FROM [Sheet1$]", cn) 
      cn.Open() 

      adapter.SelectCommand = cmdselcet 
      Dim ds As DataSet 
      ds = New DataSet 

      'Display 
      adapter.Fill(ds) 
      DataGridView1.DataSource = ds.Tables(0) 
      MsgBox("Done!") 

     Catch ex As Exception 
      MsgBox(ex.Message) 
     End Try 

    End Using