用C#打开Excel 2003电子表格。 找不到可安装的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;");
但是,我得到一个无法find可安装的ISAM例外cmd.conn.open();
我遵循这里的build议: http : //support.microsoft.com/kb/209805
在这里: 错误:“找不到可安装的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;"";");
虽然你的例子没有显示,但是这个错误也可能是由文件path中的空格造成的。 在这种情况下,您需要将文件path换成引号。
OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""F:\test.xls"";...
假设您的系统要求包括安装Excel,则可以使用Excel对象库
Excel.Sheets sheets = m_Excel.Worksheets; Excel.Worksheet worksheet = (Excel.Worksheet)sheets.get_Item(1); Excel.Range range = worksheet.get_Range("A1", "E1".ToString());
等等
另请参阅VSTO
尝试这个
我有这个问题。 只是因为报价
string sConnection = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sFilePath + ";" + "Extended Properties='Excel 8.0;HDR=YES;'";
用于.NET的SpreadsheetGear是一个免版税的电子表格组件,可以为32位和64位.NET做任何事情,而不依赖于Excel(或者除.NET 2.0以外的其他任何东西)。
你可以在这里看到活的ASP.NET示例,如果你想自己试试,可以在这里下载免费试用版。
免责声明:我自己的SpreadsheetGear LLC