首页 文章

OLEDB连接字符串失败 - Excel打开时除外...?

提问于
浏览
1

我正在尝试使用C#中的Microsoft.Jet.OLEDB.4.0 **以编程方式读取Excel电子表格(.xlsm格式)的内容 .

我的连接字符串是:

Provider = Microsoft.Jet.OLEDB.4.0;扩展属性=“Excel 8.0; HDR = YES; IMEX = 1;”“;数据源=”C:\ Test.xlsm“

当我执行我的代码时,它失败并带有异常声明:

OldDbException未被用户代码处理外部表不是预期的格式 .

但是 - 如果我在Excel中打开Test.xlsm文件并重新运行我的代码,它将毫无例外地工作并按预期执行 . 没问题,效果很好 .

  • 为什么/在Excel中打开特定文件如何更改我的代码访问它的方式?

  • 使用Microsoft Jet OLEDB提供程序打开.xlsm文件的正确方法是什么?

附加信息:运行Windows 7 x64 / Excel 2010

1 回答

  • 0

    “Excel 8.0;”连接字符串的一部分是指Excel 2003和早期文件(即.xls扩展名)

    您可能希望尝试Excel 2007以上的连接字符串并使用专门用于.xlsm文件的版本:

    Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\test.xlsm;Extended Properties=""Excel 12.0 Macro;HDR=YES"";

    (需要 "" 来逃避 " 字符)

    Excel连接字符串通常写在Provider的顺序中;数据源;扩展属性 . 您使用的连接字符串的顺序不同,似乎也有一些不一致的 " 字符处理 . 您的原始连接字符串应该写为:

    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Test.xlsm;Extended Properties=""Excel 8.0;HDR=YES;IMEX=1"";

    即使这样它也可能不适用于.xlsm文件

相关问题