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

升级Access2016后.NET6 Web API上传Excel报错:ACE OLEDB未注册

.NET6 Web API 升级Access 2016后Excel上传问题解决

核心问题分析

升级Access 2016后出现的The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine报错,以及大文件数据不全问题,本质是ACE驱动版本与系统/项目位数不兼容,加上OLEDB默认的数据类型扫描机制导致部分行被忽略。


具体解决步骤

1. 安装匹配位数的Access 2016 ACE驱动

  • 卸载系统中已有的ACE驱动(避免版本冲突)
  • 下载对应系统位数的Microsoft Access Database Engine 2016 Redistributable:
    • 64位系统装64位驱动,32位系统装32位驱动
    • 若已安装32位Office,安装64位驱动时需用被动安装命令绕过位数检测:setup.exe /passive

2. 调整项目与连接字符串配置

  • 项目位数设置:右键项目→属性→生成→目标平台,选择与ACE驱动一致的位数(x64或x86),禁用AnyCPU(Web环境下AnyCPU可能默认走32位,与64位驱动不兼容)
  • 修正连接字符串:
    针对.xls文件:
    string con = $"Provider=Microsoft.ACE.OLEDB.16.0;Data Source={path};Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;MAXSCANROWS=0;'";
    
    针对.xlsx文件(兼容性更好):
    string con = $"Provider=Microsoft.ACE.OLEDB.16.0;Data Source={path};Extended Properties='Excel 12.0 Xml;HDR=Yes;IMEX=1;MAXSCANROWS=0;'";
    
    其中MAXSCANROWS=0会强制OLEDB扫描所有行确定列数据类型,避免因前几行数据类型与后续行不一致导致的行丢失。

3. 验证驱动注册状态

打开注册表编辑器,检查对应路径是否存在:

  • 64位驱动:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Access Connectivity Engine\Engines\ACE
  • 32位驱动:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\16.0\Access Connectivity Engine\Engines\ACE
    存在则说明驱动注册成功。

内容的提问来源于stack exchange,提问作者Devesh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:43:24