2016-09-22 41 views
0

我想通过vb.net将Excel文件导入Access数据库 这个想法是客户可以将数据导出到excel,修改它,添加,删除它们导入回来了。使用vb.net将Excel文件上传到MS Access中

导出的数据与导入的表格格式完全相同。 我使用下面的代码:

Try 
    Dim strFileName As String = String.Empty 
    Dim XLda As New OleDbDataAdapter 
    Dim ExcelTables As New DataTable 
    Dim StrSelect = "SELECT * FROM [{0}]" 

    OpenFileDialog1.FileName = "" 
    OpenFileDialog1.InitialDirectory = mdlGlobalStuff.sMasterDataPath 
    OpenFileDialog1.Filter = "Excel|*.xls|All files (*.*)|*.*" 
    If OpenFileDialog1.ShowDialog() <> Windows.Forms.DialogResult.OK Then 
     Exit Sub 
    End If 
    strFileName = OpenFileDialog1.FileName 
    Dim MyXLConnection As New OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & strFileName & ";Extended Properties=Excel 8.0;") 

    Using MyXLConnection 
     Using cmd As New OleDbCommand 
      cmd.Connection = MyXLConnection 
      cmd.CommandText = "INSERT INTO [MS Access;Database=InvoicingToolDB.accdb].[tbl_Bases] SELECT * FROM [Sheet1$]" 
      If MyXLConnection.State = ConnectionState.Open Then 
       MyXLConnection.Close() 
      End If 
      MyXLConnection.Open() 
      cmd.ExecuteNonQuery() 
     End Using 
    End Using 

Catch ex As Exception 
    MsgBox("ImportLinkLabel_LinkClicked: Importing Base data" & vbCrLf & ErrorToString()) 
End Try 

我一直有一个错误信息说:

Unrecognized database format 'c:\--path to db--\InvoicingToolDB.accdb' 

的路径是正确的,我不明白为什么格式将不被认可。

+0

dunno如果它是你的一个选项,但我已经看到类似的做法是通过在Access数据库VBA中导入一个函数,然后从VB.NET中调用该函数 –

+0

你不能使用两个不同的[数据库源]在一个SQL行..你需要先读取数据,然后打开连接到目标数据库并插入那里! –

回答

0

好的我找到了问题。 OLEDB提供程序版本不正确的(4.0不读书访问.ACCDB格式,但旧的.mdb格式) 更换:

Dim MyXLConnection As New OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & strFileName & ";Extended Properties=Excel 8.0;") 

有了:

Dim MyXLConnection As New leDbConnection("provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & strFileName & ";Extended Properties=Excel 8.0;") 

完美的作品。

相关问题