我正在尝试使用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.
有人可以帮助我,为什么有时我会收到这个错误。有什么方法可以纠正它或任何其他方式来获得相同的结果。
任何帮助将不胜感激。
由于
答案 0 :(得分:0)
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 }}