使用 vb.net 将 Excel 文件上传到 MS Access

Uploading Excel File into MS Access using vb.net

我正在尝试通过 vb.net 将 Excel 文件导入 Access 数据库 这个想法是客户可以将数据导出到 excel,修改它,添加,删除它们再导入回来。

导出的数据与要导入的 table 的格式完全相同。 我正在使用以下代码:

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'

路径是正确的,我不明白为什么格式不被识别。

好的,我找到问题了。 OLEDB Provider 版本不正确(4.0 不读取 Access .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;")

完美运行。