使用 vb .net OleDB 读取 Excel 文件时出错

Error reading Excel file with vb .net OleDB

早上好, 使用以下代码读取 Excel 文件。

[CODE]

    strFClasse = oCld.GetSettingBus("BSJVE001", "OPZIONI", ".", "FileClasse", Path.Combine(oApp.AscDir, "Classi.xls"), " ",   Path.Combine(oApp.AscDir, "Classi.xls"))
    MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & strFClasse & "';Extended Properties=Excel 8.0;")
    MyConnection.Open()

    strSCl = "SELECT * FROM [Classi$A:B] WHERE [Group] = " & CStrSQL(strCodIn)
    MyCommand = New System.Data.OleDb.OleDbDataAdapter(strSCl, MyConnection)
    MyCommand.Fill(dtTemp)
[/CODE]

在生产中测试运行所有内容 (windows 7) 我收到以下错误:

OleDbException: -2147467259 - Error creating file.

提前致谢。

当您像这样使用它时,如果找不到文件,OLEDB 将尝试创建文件。我怀疑您的服务器无法访问该路径,因此假定该文件不存在,然后尝试创建它。这也会失败,因此您会收到 "Error Creating File" 错误。检查路径的安全性。

顺便说一下,您应该使用 Microsoft.ACE.OLEDB.12.0 提供程序,因为 V4.0 现在真的很旧了。

您还可以在连接字符串中添加 HDR=Yes 和 IMEX=1。第一个指示 sheet 是否在第一行中有列名,第二个指示 OLEDB 列应被视为文本。这有助于避免混合数据列的各种问题。

最后,显式定义变量是个好习惯。

Dim MyConnection As System.Data.OleDb.OleDbConnection

对于寻找此一般性错误的其他原因的任何其他人,如果您在文件路径中添加其他不必要的 spaces,我就会看到此错误。例如,在 "c:\Folder1 \Folder2\Myfile.xls" 中 "Folder1" 之后的附加 space 似乎也会产生此类错误。