【问题标题】:Provider cannot be found. It may not be properly installed. To connect excel 2016找不到提供者。它可能没有正确安装。连接excel 2016
【发布时间】:2018-04-07 09:58:38
【问题描述】:

我正在尝试使用

从 Excel 2016 文件中读取

strConnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strXLPath + ";Extended Properties=\"Excel 12.0;HDR=YES;\";";.

我正在使用 ActivexObject 和 ADODB.Connection 打开与 excel 文件的连接。我得到了

找不到提供程序。可能没有正确安装

错误。我在 .Net 3.5、Access Database Engine 2010(64 位)和 Office 2016(64 位)以及 windows 7(64 位)和 Visual Studio 2008 中使用 c#。请帮助我。我已经搜索了很多,但找不到任何解决方案。我附上了我的代码和错误图片。ADODB error

<script type="text/javascript" language="javascript"> 
    function IsXLValid() {


        var strXLPath = document.getElementById('<% =FileUpload.ClientID%>').value

        var len = strXLPath.length;

        if (len == 0) {
            alert("Please select batch control numbers spreadsheet to upload.");
            return false;
        }

        //var regex = "^(([a-zA-Z]:)|(\\\\{2}\\w+)\\$?)(\\\\(\\w[\\w].*))(.(X|x)(L|l)(S|s))$";
        var regex = "^(([a-zA-Z]:)|(\\\\{2}\\w+)\\$?)(\\\\(\\w[\\w].*))(.(X|x)(L|l)(S|s)(M|m))$";

        if (!(strXLPath.match(regex))) {
            alert(strXLPath + " is not a valid excel file.");
            return false;
        }

        //var strConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strXLPath + ";Extended Properties=\"Excel 8.0;HDR=YES\"";
        var strConnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strXLPath + ";Extended Properties=\"Excel 12.0;HDR=YES;\";";

        var conn = new ActiveXObject("ADODB.Connection");


        conn.open(strConnString, "", "");

        var rs = new ActiveXObject("ADODB.Recordset");

        var rsrowCount = new ActiveXObject("ADODB.Recordset");

        var schemaRS = new ActiveXObject("ADODB.Recordset");

        var adSchemaTables = 20;

        schemaRS = conn.OpenSchema(adSchemaTables);

        strdatatype = schemaRS.fields(2).value;

        var datatype = "ERISAREQ$";

        if (strdatatype !== datatype) {

            alert(strXLPath + " is not a valid spreadsheet with the numbers: " + strdatatype + "");
            rs = null;
            rsSheet = null;
            conn.close();
            conn = null;
            return false

        }

       rs = conn.execute("select * from ZRangeValid");
        if (rs.fields(0).value != 'YES') {
            alert(strXLPath + " requested numbers spreadsheet is not valid.\nPlease validate the spreadsheet data and retry.")
            rs = null;
            rsSheet = null;
            conn.close();
            conn = null;
            return false

        }

         rsrowCount = conn.execute("SELECT COUNT([Control Number]) from [ERISAREQ$]");

        if (rsrowCount.fields(0).value < 70) 
        {
            var answer = confirm("Uploaded Spreadsheet has less than 70 Numbers, would you like to proceed..?")
            if (answer) 
            {

                rsrowCount = null;
                rsSheet = null;
                conn.close();
                conn = null;
                return true;

            }
            else 
            {
                return false;
            }
        }
        return true
        rs = null;
        rsSheet = null;
        conn.close();
        conn = null;

    }

    function trim(str) {
        return str.replace(/^\s*|\s*$/g, "");
    }

</script>

【问题讨论】:

    标签: c# oledb adodb


    【解决方案1】:

    问题已解决,当我安装 Access Database Engine 2010(32 位)时,我使用的是 64 位引擎,我的 ASP.net 应用程序在 32 位模式下运行,因为 Visual Studio 具有 32 位 Web 服务器(WebDev.WebServer.exe)。

    【讨论】:

      【解决方案2】:

      如果你使用的是Visual Studio,你可以使用服务器资源管理器,通过选择oledb provider来连接访问db文件,然后在属性窗口中你可以得到连接字符串。

      【讨论】:

      • 谢谢您的回复,但是您能更清楚地了解服务器资源管理器吗?我不知道。我想在给定的 javascript 函数中读取 excel 2016 文件。
      • 好的,但是这里我的数据源是一个excel文件,那里是.accdb文件,我如何使用.xlsx文件作为.accdb文件?
      • 哦,对不起,Excel文件不是数据库文件,首先你把文件转换成访问db文件。在访问环境中,您可以从excel文件中导入数据,并从数据中制作数据库文件。 excel文件中的每张表都可以转换为表格。在“外部数据”选项卡中的“访问”中单击 excel 按钮。
      • 但是如果你想处理excel文件,你不能使用sql命令,你必须处理工作表、行和列。我建议使用 sheetJS 或 JSpreadsheets 之类的库。您可以搜索以找到其他替代工具。
      • 但是你能告诉我为什么会出现这个错误。它在 Microsoft.JET.OLEDB.4.0(带有 .xls 文件)上运行良好。当我想将它用于 .xlsx 时,就会出现此错误。有什么想法吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-05
      • 2011-01-31
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 2014-03-10
      • 1970-01-01
      相关资源
      最近更新 更多