【发布时间】:2015-09-28 13:57:53
【问题描述】:
在我当前的项目中,我将创建一个程序,每天读取一个新的 Excel 电子表格(每天向网络文件路径添加一个新的电子表格)并导出到数据库。每当我尝试写入数据表变量时,我都会收到此错误:
System.Data.OleDb.OleDbException (0x80004005):外部表不是预期的格式。
使用如下代码sn -p,错误出现在最后一行:
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 字符串。
这个字符串正确吗?
谁能解释我的问题?
【问题讨论】:
-
右击xls文件并用记事本打开:它包含XML代码?如果是这样,请使用 .NET 类来读取 XML。