Microsoft ACE OLEDB提供程序抛出无法找到可安装的ISAM异常

时间:2010-08-20 13:50:17

标签: excel oledb ms-jet-ace

我正在尝试使用64位进程读取Excel电子表格。因此,我使用64位版本的Micorosft Access Database Engine 2010

以下代码

var cs = @"Provider=Microsoft.ACE.OLEDB.12.0;"
         + @"Data Source=C:\test.xls;"
         + @"Extended Properties=""Excel 14.0;""");

con = new OleDbConnection(cs);
con.Open();

抛出异常:

无法找到可安装的ISAM

使用谷歌我发现了很多关于此例外的问题。但他们提到JET似乎不适用于我的问题。

有什么建议吗?

5 个答案:

答案 0 :(得分:1)

我今天遇到了同样的问题。我的配置是:

  • x64 .NET 2.0桌面应用程序,它读取XLSX文件。
  • x64版本的Microsoft Access数据库引擎2010可再发行组件
  • 我的连接字符串包含扩展属性属性,其值为“Excel 14.0;”,因为组件中的documentation读取。

我遇到了完全相同的问题:无法找到可安装的ISAM例外。我遇到this article之后解决了这个问题,它说明组件的MS网站文档存在错误。我不确定组件的文档是否不准确,我可以说是将扩展属性更改为 Excel 12.0 Xml 解决了这个问题。

答案 1 :(得分:1)

我遇到了完全相同的问题,试图从Excel 2007 .xlsx文件中获取数据。

通常可靠的“Microsoft.ACE.OLEDB.12.0”驱动程序只是拒绝连接,抛出了你一直看到的“找不到可安装的ISAM ”错误。

最终,我找到了这个代码,它起作用了:

SELECT * FROM OPENROWSET('MSDASQL',
    'DRIVER=Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb);
     DBQ=D:\Sample.xlsx', 'SELECT * FROM [Sheet1$]')

希望这有帮助!

(改编自此帖子中的最终帖子:SQLTeam.com

不久之后......

现在,突然,我的原始连接字符串 正常工作。这是早先失败的(在我使用上面的MSDASQL字符串成功连接之前),但现在可以成功运行。

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
    'Excel 12.0;Database=D:\Sample.xlsx;HDR=NO;IMEX=1', 
    'SELECT * FROM [Sheet1$]')

奇怪,很奇怪。

答案 2 :(得分:1)

在我的连接字符串中添加引号后,ISAM错误消失了(下面的代码)。

string GetConnectionString(string fileName)
{
    return "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended   Properties=\"Excel 12.0;HDR=YES;\"";
}

答案 3 :(得分:1)

我发现使用excel和工具安装2013办公室并保持先前​​版本不变。然后进行自定义安装...然后打开2013 excel一次然后关闭它。然后转到控制面板并添加从2013年删除excel的删除功能。然后打开2010 excel并让它快速刷新自己安装,然后它可以正常工作。

答案 4 :(得分:0)

指向" This Article"的链接是正确的,但是将单引号更改为双引号。我使用OpenFileDialog获取任何excel文件。 (我使用Excel 2013进行测试)

=>帖子中的原始格式< =
//较新的版本,任何xls文件 " Provider = Microsoft.ACE.OLEDB.12.0; Data Source ='C:\ AlmostAnyExcelVersionFileRunningUnder64BitOS.xls';扩展属性='Excel 12.0; HDR = NO; IMEX = 1;';"

=>更正格式< =
XLConnection =" Provider = Microsoft.ACE.OLEDB.12.0; Data Source =" &安培; Chr(34)& ExceilFileDialog.FileName& Chr(34)& &#34 ;;扩展属性=" &安培; Chr(34)& " Excel 12.0; HDR = NO; IMEX = 1;" &安培; Chr(34)& &#34 ;;"