c# - 使用 C# 打开 Excel 2003 电子表格。找不到可安装的 ISAM。异常(exception)

标签 c# excel xls isam

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

相关文章:

python - 用 Pandas 阅读excel专栏

excel - 使用宏仅打开给定目录中的 .xls 文件

Ruby:读取 xls 文件的内容并获取每个单元格信息

c# - 显示数据集中的数据?

sql-server-2005 - 出现错误 430 : Automation error

excel - 发送的邮件项目无效使用

ruby-on-rails - Rails 中的 Spreadsheet.open 给出此错误 "unknown encoding name - MACINTOSH"

c# - 如何在线程中等待异步方法?

c# - 检测来电iphone 5

C# 语音识别