找不到可安装的 ISAM

9

我有以下代码:

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个回答

22

我也遇到了相同的错误,但是上面的任何建议都没有起作用。在我的情况下,我所要做的就是将连接字符串更改为:

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

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


这对我有用,通过将所有扩展属性放入引号''中。 - bic

4

Jet OLEDB驱动程序没有64位版本,所以如果您在64位操作系统上运行此驱动程序,则可能需要在.NET应用程序中针对x86而不是Any CPU进行目标定位:

替代文本


3
我通过在数据源周围加上引号来解决了这个问题。请参见此处的答案:https://dev59.com/wXRB5IYBdhLWcg3wyqEd#512187 - Charlino
我也遇到了同样的错误,并且我是这样解决的:链接 - itsho
这也没有解决我的问题。 - Aditya Bokade
没有修复我的问题。 - levi

3
我遇到了一个问题,尝试使用更新的提供程序打开xls文件时出现了错误。 我通过更改扩展属性来解决了这个问题。
Extended Properties="Excel 11.0;"

to

Extended Properties="Excel 8.0;"

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

哇,我之前使用的是Microsoft.ACE.OLEDB.16.0,然后我把Excel 160改成了8.0,现在可以正常工作了。谢谢。 - AbbathCL

1

0

使用 Extended properties="\excel 8.0;



0

我曾经遇到过同样的问题。我使用的是Excel 2010数据库,但我使用的是xlsx文件而不是xls文件。我通过以下连接字符串解决了我的问题:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=logbook.xlsx;Extended Properties='Excel 12.0;HDR=YES;IMEX=1;';

我错过的是: 我使用的是OLEDB.4.0而不是ACE.12.0。我尝试使用ACE.14.0,但它也没有起作用。 然后我忘记在Extended Properties周围加上引号(' ')。

如果答案难以阅读,很抱歉,因为我是在手机上上传的。


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'");

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接