我需要从 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() 上收到 Could not find installable ISAM 异常;
我听从了这里的建议: http://support.microsoft.com/kb/209805
这里: Error: "Could Not Find Installable ISAM"
运气不好。
我愿意接受其他从 xls 中提取数据的方法。或者即使有一个命令我可以在 xls 上运行以删除可能工作的 mirged 单元格。
最佳答案
我认为这只是因为如果您有多个扩展属性,则必须将其括在引号中
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/