我正在使用ASP.NET打开服务器上托管的Excel2003文档。由我控制之外的系统生成的Excel电子表格有5个命名工作表。我按如下方式访问每个工作表中的数据(为了可读性添加了换行符):
string ExcelConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\sample.xls;
Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1;\";";
OleDbDataAdapter myData =
new OleDbDataAdapter("SELECT * FROM [mysheet]", ExcelConn);
myData.TableMappings.Add("Table", "mysheet");
myData.Fill(ExcelDS);
这适用于5张纸中的3张。其他两个抛出此错误:
Microsoft Jet数据库引擎
找不到对象“mysheet”。
确保对象存在并且
你拼写它的名字和路径名
正确地。
我通过检查底部选项卡中的文本以及在Excel中生成的字符串的结尾,检查了工作表名称的四倍:
=CELL("filename")
c:\[sample.xls]mysheet
连接字符串被指定一次,并在所有5个工作表中重复使用。
是否可能需要使用与Excel中可见的名称不匹配的字符串引用工作表?可能是隐藏的字符、空格等?还有其他方法可以找到工作表的真实名称吗?是否有其他检索此数据的建议?
注意:我不能修改Excel文档(如果我可以用自己的方式导入csv,我会使用ssis)。
我用的是.NET 3.5/II6。