尝试访问 Excel 时,外部表不是预期格式错误
Posted
技术标签:
【中文标题】尝试访问 Excel 时,外部表不是预期格式错误【英文标题】:External table is not in the expected format error while trying to access Excel 【发布时间】:2015-03-17 04:39:05 【问题描述】:我正在尝试使用 Oledb Connection 从我的 vb 应用程序访问 Excel。 这是我的连接字符串:
<add key="ExcelConnection" value="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=0;Extended Properties="Excel 12.0 Xml;HDR=NO;IMEX=1;MAXSCANROWS=1000;READONLY=FALSE;"" />
代码如下:
Dim connection As New System.Data.OleDb.OleDbConnection(ExcelConnectionString)
connection .Open()
Dim schTbl As DataTable = connection .GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, Nothing)
Dim dbAdapter As System.Data.OleDb.OleDbDataAdapter
Dim execQuery As String
Dim rtnData As System.Data.DataTable
execQuery = "SELECT * FROM [" & schTbl.Rows.Item(0)("TABLE_NAME") & "]"
dbAdapter = New System.Data.OleDb.OleDbDataAdapter(execQuery , ExcelConnectionString)
dbAdapter.Fill(rtnDat )
dbAdapter.Dispose()
connection .Close()
schTbl .Reset()
我的问题是,上面 70% 的时间都在工作,但其余时间我收到以下错误:
System.Data.OleDb.OleDbException (0x80004005): External table is not in the expected format.
谁能帮我解释一下为什么有时我会收到这个错误。有没有办法纠正它或任何其他方式来获得相同的结果。
任何帮助将不胜感激。
谢谢
【问题讨论】:
【参考方案1】:External table is not in the expected format.
通常在尝试使用 Excel 2007 文件时出现。
使用以下连接字符串似乎可以解决大多数问题。
dim path as string = yourfilepath
dim connStr as string = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;"
编辑
在您使用.xlsx
文件的情况下,有时这也可能会失败。如果是这种情况,您应该在您的电脑中安装 JET 数据库引擎来覆盖这些错误。它是可用的http://www.microsoft.com/downloads/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en
【讨论】:
感谢您的回复。我的连接字符串几乎与您显示的内容相似,以及您的下一个建议。如果这是数据库引擎的问题,那么每次执行时它都应该抛出错误,但它只会在随机时间给我错误。 可能是您使用了.xlsx
文件,但您会遇到异常。
好吧,我最后的建议是,access 2010 engine 这个安装在你的机器上吗??
我每次都只使用 .xlsx 文件。
好的,所以你在使用.xlsx
文件时遇到了这个异常??并且只针对一些随机文件?以上是关于尝试访问 Excel 时,外部表不是预期格式错误的主要内容,如果未能解决你的问题,请参考以下文章
批量Excel数据导入Oracle数据库 导入excel错误:外部表不是预期的格式 解决方案