0

当我运行下面的代码时,出现以下错误:

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 文件中单个单元格的内容。

4

0 回答 0