C#导入Excel至SQL Server遇Microsoft.ACE.OLEDB.12.0未注册错误求助
排查"Microsoft.ACE.OLEDB.12.0未注册"异常的遗漏点
以下是你可能忽略的几个关键排查方向:
Access Database Engine版本与架构不匹配
即使项目以x86编译,若安装的是64位版ACE驱动,x86程序仍无法加载驱动。需确认安装的是32位版ACE驱动:- 若系统已安装64位Office,直接安装32位ACE会报错,需用被动安装命令:
AccessDatabaseEngine.exe /passive
- 若系统已安装64位Office,直接安装32位ACE会报错,需用被动安装命令:
连接字符串参数不准确
针对.xlsx格式文件,建议调整Extended Properties参数:- 替换为
Extended Properties="Excel 12.0 Xml;HDR=YES;"(HDR=YES表示第一行是表头,按需调整为HDR=NO),原参数Excel 12.0更适配旧版.xls格式,可能导致驱动识别异常
- 替换为
Web项目的IIS应用池设置
若为ASP.NET类Web项目,需检查IIS应用池的32位启用状态:- 在IIS管理器中找到对应应用池,进入「高级设置」,将「启用32位应用程序」设为
True,否则即使项目编译x86,IIS仍会以64位环境运行,无法加载32位ACE驱动
- 在IIS管理器中找到对应应用池,进入「高级设置」,将「启用32位应用程序」设为
手动重新注册驱动
尝试手动注册32位ACE驱动:- 以管理员身份打开32位命令提示符(路径为
C:\Windows\SysWOW64\cmd.exe),执行注册命令:regsvr32 "C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL" - 注意:
OFFICE14对应Office 2010版,若为2016/2019/365版本,路径需改为OFFICE16
- 以管理员身份打开32位命令提示符(路径为
文件权限间接导致驱动加载失败
Excel文件所在目录的权限不足,可能触发驱动加载异常(表现为未注册错误):- 确保程序运行身份(如Web应用池身份、桌面程序当前用户)拥有目标Excel文件的读取权限
Office与ACE驱动的版本冲突
若系统安装了64位Office,即使被动安装32位ACE驱动,仍可能存在版本冲突:- 可尝试修复Office安装,或改用无需ACE驱动的第三方库(如ExcelDataReader)读取Excel文件,规避驱动依赖问题
内容的提问来源于stack exchange,提问作者Lorenzo Santarelli
相关产品推荐
相关产品推荐

