尝试访问 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=&quot;Excel 12.0 Xml;HDR=NO;IMEX=1;MAXSCANROWS=1000;READONLY=FALSE;&quot;" />

代码如下:

 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错误:外部表不是预期的格式 解决方案

错误 3274 外部表不是预期的格式

批量Excel数据导入Oracle数据库 导入excel错误:外部表不是预期的格式 解决方案

SSIS - “外部表不是预期的格式”和.xls文件

c#编制程序把EXCEL文件导入DATAGRIDVIEW,结果运行后提示:外部表不是预期的格式。

外部表不是预期的格式。未安装 MS Office。使用 C# 创建 xlsx 文件