OLEDB连接string失败 – Excel打开时除外…?
我试图在C#中使用Microsoft.Jet.OLEDB.4.0 **编程读取Excel电子表格(.xlsm格式)的内容。
我的连接string是:
Provider = Microsoft.Jet.OLEDB.4.0; Extended Properties =“Excel 8.0; HDR = YES; IMEX = 1;”“; Data Source =”C:\ Test.xlsm“
当我执行我的代码时,它会失败,出现一个exception,声明:
OldDbException未被用户代码处理
外部表格不是预期的格式。
但是,如果我在Excel中打开Test.xlsm文件并重新运行我的代码,它将毫无例外地工作,并按预期执行。 没问题,效果很好。
- 为什么/如何在Excel中打开特定的文件会改变我的代码访问它的方式?
- 使用Microsoft Jet OLEDB提供程序打开.xlsm文件的正确方法是什么?
其他信息:运行Windows 7 x64 / Excel 2010
“Excel 8.0” 连接string的一部分是指Excel 2003和更早的文件(即.xls扩展名)
您可能想要尝试Excel 2007以后的连接string,并使用专门用于.xlsm文件的版本:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\test.xlsm;Extended Properties=""Excel 12.0 Macro;HDR=YES"";
( ""
是需要逃避"
性格"
Excel连接string通常以Provider的顺序编写; 数据源; 扩展属性。 您使用的连接string的顺序不同,而且似乎也有一些不一致的"
字符"
处理,您原来的连接string应该写成:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Test.xlsm;Extended Properties=""Excel 8.0;HDR=YES;IMEX=1"";
即使这样它可能无法使用.xlsm文件