在我当前的项目中,我将创建一个程序,每天读取一个新的Excel电子表格(每天添加一个新的网络文件路径)并导出到数据库。每当我尝试写入数据表变量时,我都会收到此错误:
System.Data.OleDb.OleDbException(0x80004005):外部表格不是预期的格式。
使用以下代码段,错误发生在最后一行:
xls_sql = "SELECT * FROM [" & FN & "]"
Dim dt2 As DataTable
Dim myAdapter2 As Data.OleDb.OleDbDataAdapter
dt2 = New DataTable()
myAdapter2 = New Data.OleDb.OleDbDataAdapter(xls_sql, Replace(My.Settings.xlsfile, "FileNameHere", FN))
myAdapter2.Fill(dt2)
我认为我已经解决了这个问题,即使我添加日常Excel文件的程序(我不知道或访问)将它们列为.xls文档,它们实际上也被格式化为.xml文档。我的第一个线索是,当打开其中一张纸时,它看起来像普通的Excel表,但当我转到"另存为"时,默认选择的选项为" XML"
我正在使用XML的当前连接字符串:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\temp\FileNameHere;Extended Properties="Excel 12.0 Xml;HDR=YES";
因为我必须寻找一个合适的替换我之前知道可用的.xls字符串。
这个字符串是否正确?
谁能解释我的问题?
答案 0 :(得分:0)
我不确定它是否能解决您的问题,但我有一个导入xls电子表格的功能。我使用的连接字符串是这样的:
Dim conexao_Excel As String = "Provider=Microsoft.Jet.OleDb.4.0;" _
& "data source=""" & arquivo & """;" _
& "Extended Properties=Excel 8.0;"
da = New OleDb.OleDbDataAdapter("SELECT * FROM [" & nome & "$] WHERE valor IS NOT NULL ", conexao_Excel)
它对我来说非常合适。 arquivo是包含文件路径的变量,nome是工作表的名称。
希望有所帮助。