当我运行下面的代码时,出现以下错误:
System.Data.OleDbException of {“外部表不是预期的格式。”}
我已经尝试了所有不同的扩展属性:
- Excel 8.0
HDR=NO
有无。IMEX=1
有无。
- Excel 12.0
HDR=NO
有无。IMEX=1
有无。
XLS 文件最初从网页下载到计算机的本地硬盘驱动器。然后,我的 Web 应用程序使用 FileUpload 控件将其上传到不同的 Web 服务器(该文件未锁定,我对此进行了测试)。然后调用下面的代码。
我找到的唯一解决方案是 - 如果我只是在 Excel 中打开文件(我有 Office 2013)然后关闭 Excel,代码就可以工作!没有 OleDbException!我没有以其他格式保存文件,我只是在 Excel 中打开文件并关闭它!
是什么赋予了?我无法找到有关预期文件格式的任何信息,或者这是否真的是问题所在。为什么查询会仅仅因为文件已用 Excel 打开?
无论如何,任何帮助将不胜感激。这是代码:
DataSet ds = new DataSet();
string findTypeConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + "; Extended Properties=\"Excel 12.0;HDR=NO\"";
string findTypeQuery = "SELECT * FROM [Sheet1$E1:E1]";
using(OleDbConnection findTypeCon = new OleDbConnection(findTypeConnectionString)){
using(OleDbDataAdapter findTypeDa = new OleDbDataAdapter(findTypeQuery, findTypeCon)){
findTypeDa.Fill(ds);
}
}
OleDbException 发生在:
findTypeDa.Fill(ds);
编辑 - 是的,我正在选择 xls 文件中单个单元格的内容。