我需要从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/