当前位置:  开发笔记 > 编程语言 > 正文

使用C#打开Excel 2003电子表格.找不到可安装的ISAM.例外

如何解决《使用C#打开Excel2003电子表格.找不到可安装的ISAM.例外》经验,为你挑选了1个好方法。

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

在这里: 错误:"无法找到可安装的ISAM"

没运气.

我对其他从xls中提取数据的方式持开放态度.或者即使有命令我可以在xls上运行以删除可能有效的mirged单元格.



1> DJ...:

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

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"";...

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有