我需要从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单元格.
我认为这只是因为如果您有多个扩展属性,则必须将扩展属性括在引号中
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"";...