我需要从xls中提取数据,我还需要让用户能够更改文件的位置。因此,OleDbConnection似乎是一个不错的开始,直到第一个合并的单元格为止。

这适用于除合并单元格以外的所有单元格:

OleDbCommand cmd = new OleDbCommand();
cmd.Connection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=F:\test.xls;Extended Properties=Excel 8.0;");
cmd.CommandText = "SELECT * FROM [Sheet$]";
cmd.Connection.Open();

我发现这应该允许访问合并的单元格:
OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\test.xls;Extended Properties=Excel 8.0;HDR=Yes;IMEX=1;");

但是然后我在cmd.conn.open();上得到了一个找不到可安装的ISAM异常;

我遵循了这里的建议:
http://support.microsoft.com/kb/209805

和这里:
Error: "Could Not Find Installable ISAM"

没有运气。

我乐于接受其他从xls提取数据的方法。或者,即使有命令,我也可以在xls上运行以删除可能起作用的镜像单元。

最佳答案

我认为这是因为如果您有多个,则必须将扩展属性括在引号中

OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\test.xls;
Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';");

或者,如果单引号不起作用(您有主意)
OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\test.xls;
Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1;"";");

尽管您的示例未显示该错误,但该错误也可能是由文件路径中的空格引起的。在这种情况下,您还需要将文件路径括在引号中。
OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""F:\test.xls"";...

关于c# - 使用C#打开Excel 2003电子表格。找不到可安装的ISAM。异常(exception),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/644331/

10-11 15:20