找不到可安装的ISAM

时间:2010-11-18 12:03:47

标签: c# oledb

我有以下代码:

string excelConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\db\suc.xls; Extended Properties=""Excel 12.0;HDR=YES;""";

// Create Connection to Excel Workbook
using (OleDbConnection connection =
             new OleDbConnection(excelConnectionString))
{
    OleDbCommand command = new OleDbCommand
            ("Select * FROM [Sheet1$]", connection);

    connection.Open();

我收到以下错误:

  

无法找到可安装的ISAM。

connection.Open()。有什么想法吗?

7 个答案:

答案 0 :(得分:17)

我遇到了同样的错误,但上述建议都没有奏效。在我的情况下,我所要做的就是将我的连接字符串更改为:

string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FilePath + ";Extended Properties='Excel 12.0;IMEX=1;'";

请注意扩展属性属性周围的单引号(' Excel 12.0; IMEX = 1;')。一旦我添加了这些单引号,错误就消失了!

答案 1 :(得分:5)

没有64位版本的Jet OLEDB驱动程序,所以如果你在64位操作系统上运行它,你可能需要在.NET应用程序中定位x86而不是Any CPU

alt text

答案 2 :(得分:2)

我在尝试使用更新的提供程序打开xls文件时遇到此问题。 我通过从

更改扩展属性来解决此问题
Extended Properties="Excel 11.0;"

Extended Properties="Excel 8.0;"

我猜Excel 11需要一个xlsx样式文件。

答案 3 :(得分:0)

使用Extended properties="\excel 8.0;

答案 4 :(得分:0)

在64位Windows和64位Office(2010,2013)环境中,有许多关于此错误的报告。修复或解决方法有点奇怪,但似乎适用于那里的大多数人。

Microsoft Access Database Engine 2010 Redistributable”安装包似乎很自然,但有几份报告称它不起作用。

相反,使用“2007 Office System Driver: Data Connectivity Components”似乎可以解决大多数人的上述问题。

答案 5 :(得分:0)

我有同样的问题。我正在使用Excel 2010数据库。但是我有一个xlsx文件而不是xls。我使用连接字符串作为休止符解决了我的问题,

Provider = Microsoft.ACE.OLEDB.12.0; Data Source = logbook.xlsx;扩展属性='Excel 12.0; HDR = YES; IMEX = 1;';

我所缺少的是 我使用OLEDB.4.0而不是ACE.12.0。我尝试使用ACE.14.0。但这也不起作用。 然后我错过了扩展属性周围的反引号('')。

很抱歉,如果答案难以理解,我正在手机中上传。

答案 6 :(得分:0)

//设置与EXCEL文件的连接。

              OleDbConnection myExcelConn = new OleDbConnection
                  ("Provider=Microsoft.ACE.OLEDB.12.0; " +
                      "Data Source=" + Server.MapPath(".") + "\\" + fileUpload1.FileName +
                      ";Extended Properties='Excel 12.0;HDR=YES'");

在扩展属性中放入单引号,例如 扩展属性='Excel 12.0:HDR = YES'解决了我的问题。