我正在尝试使用下面显示的代码读取Excel (xlsx)文件。我得到一个“外部表不是预期的格式”。错误,除非我已经在Excel中打开了该文件。换句话说,我必须先在Excel中打开文件,然后才能从我的C#程序中读取if。xlsx文件在我们网络上的一个共享上。如何在不打开文件的情况下读取该文件?谢谢
string sql = "SELECT * FROM [Sheet1$]";
string excelConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathname + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1;\"";
using (OleDbDataAdapter adaptor = new OleDbDataAdapter(sql, excelConnection)) {
DataSet ds = new DataSet();
adaptor.Fill(ds);
}
发布于 2009-09-01 16:38:52
“外部表不是预期的格式。”通常在尝试使用连接字符串为Microsoft.Jet.OLEDB.4.0和Extended Properties=Excel 8.0的Excel2007文件时发生
使用以下连接字符串似乎可以解决大多数问题。
public static string path = @"C:\src\RedirectApplication\RedirectApplication\301s.xlsx";
public static string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;";
发布于 2016-01-22 20:25:00
加我的案子就行了。我的xls文件是由一个网站的数据导出函数创建的,文件扩展名是xls,它可以用MS Excel2003正常打开。但是Microsoft.Jet.OLEDB.4.0和Microsoft.ACE.OLEDB.12.0都收到了“外部表不是预期格式”的异常。
最后,正如异常所说,问题是“它不是预期的格式”。虽然它的扩展名是xls,但当我用文本编辑器打开它时,它实际上是一个格式良好的html文件,所有数据都在中,每个都是一行,每个都是单元格。然后我想我可以用html的方式来解析它。
发布于 2014-07-05 02:06:08
我在第三方和Oledb读取XLSX工作簿时遇到错误。该问题似乎是导致错误的隐藏工作表。取消隐藏工作表使工作簿能够导入。
https://stackoverflow.com/questions/1139390
复制相似问题