You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已安装Access数据库引擎仍提示Microsoft.ACE.OLEDB.12.0未注册的求助

ASP.NET导入Excel(.xlsx)时OLE DB驱动注册错误排查

问题描述

导入Excel文件时触发错误:

The OLE DB provider "Microsoft.ACE.OLEDB.12.0" has not been registered

已尝试安装32位+64位Microsoft Access Database Engine 2016 Redistributable、配置连接参数,但问题未解决。后续切换开发服务器为32位后,出现新错误:localhost is currently unable to process this request。

环境信息:

  • 已安装Microsoft Access Database Engine 2016 Redistributable(32位+64位)
  • Visual Studio Community 2019 Version 16.11.11
  • 已安装Office 2019

当前使用的读取代码:

string getcollum = "SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 14.0;Database=" + pathget + "', [UPDATE_Success$])";

核心问题排查与解决步骤

1. 清理冲突的ACE引擎版本

ACE引擎的32位和64位版本无法共存,需根据Office版本保留对应位数的引擎:

  • 若Office 2019是64位,卸载32位ACE引擎,保留64位版本;
  • 若Office 2019是32位,卸载64位ACE引擎,保留32位版本。

2. 匹配项目平台与ACE引擎位数

打开Visual Studio,右键项目→属性→生成→平台目标:

  • 对应64位ACE引擎,选择x64;
  • 对应32位ACE引擎,选择x86;
  • 禁用Any CPU选项,避免自动切换位数导致不匹配。

3. 调整开发服务器(IIS Express)位数

进入工具→选项→项目和解决方案→Web项目:

  • 使用64位ACE引擎时,勾选“使用64位版本的IIS Express用于网站和项目”;
  • 使用32位ACE引擎时,取消该勾选。

4. 替换OPENROWSET为稳定的OleDb连接方式

OPENROWSET依赖SQL Server配置且易受权限影响,建议改用OleDbConnection直接读取:

using System.Data.OleDb;

string connectionString = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={pathget};Extended Properties='Excel 12.0 Xml;HDR=YES;'";
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
    conn.Open();
    DataTable schema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
    string sheetName = schema.Rows[0]["TABLE_NAME"].ToString();
    
    string sql = $"SELECT * FROM [{sheetName}]";
    using (OleDbDataAdapter adapter = new OleDbDataAdapter(sql, conn))
    {
        DataTable dt = new DataTable();
        adapter.Fill(dt);
        // 处理读取到的数据
    }
}

5. 排查“localhost无法处理请求”的具体原因

在Web.config中添加配置显示详细错误:

<system.web>
    <customErrors mode="Off"/>
</system.web>
<system.webServer>
    <httpErrors errorMode="Detailed"/>
</system.webServer>

根据弹出的具体错误信息(如权限不足、驱动未找到等)针对性解决。

6. IIS部署额外配置(若后续部署到服务器)

  • 应用池设置:“启用32位应用程序”选项需与ACE引擎位数一致(64位引擎设为False,32位设为True);
  • 权限配置:确保应用池标识拥有Excel文件所在目录的读取权限。

内容的提问来源于stack exchange,提问作者Chim Di Tru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 09:10:32