我正在使用 ASP.NET 打开托管在服务器上的 Excel 2003 文档。由我无法控制的系统生成的 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 文档(如果可以的话,我会使用 SSIS 导入 CSV)。
我正在使用 .NET 3.5 / II6。