尝试访问Excel时,外部表格未出现预期的格式错误

时间:2015-03-17 04:39:06

标签: vb.net excel excel-2007 xlsx import-from-excel

我正在尝试使用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 个答案:

答案 0 :(得分:0)

尝试使用Excel 2007文件时,通常会发生

External table is not in the expected format.

使用以下连接字符串似乎可以解决大多数问题。

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数据库引擎来覆盖那些错误。这是可用的{{3 }}