本地未注册Microsoft.Jet.OLEDB.4.0,ASP.NET读取Excel报错求助
解决ASP.NET读取Excel时的Microsoft.Jet.OLEDB.4.0未注册错误
核心问题分析
- 你安装的Microsoft ODBC/OLE DB Driver for SQL Server仅用于连接SQL Server,和Excel的OLEDB驱动无关联,无法解决当前问题。
Microsoft.Jet.OLEDB.4.0是已淘汰的32位驱动,64位系统默认不支持该组件。
具体解决方案
1. 统一替换为ACE驱动并修复连接字符串错误
不管是.xls还是.xlsx格式,都使用Microsoft.ACE.OLEDB.12.0驱动(兼容两种格式,支持64位系统),同时修复连接字符串中Data Source缺少等号的语法错误:
if (Path.GetExtension(filePath) == ".xls") { connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=YES;IMEX=1'"; } else if (Path.GetExtension(filePath) == ".xlsx") { connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1'"; } connectionString = string.Format(connectionString, filePath);
2. 安装对应版本的ACE驱动
根据系统和应用程序位数选择适配版本(不可同时安装32位和64位,会导致冲突):
- 64位系统+未启用32位应用池:安装64位版Microsoft Access Database Engine
- 64位系统+需启用32位应用池:安装32位版Microsoft Access Database Engine
3. 调整IIS应用池设置(若需32位兼容)
如果安装了32位ACE驱动,需配置应用池:
- 打开IIS管理器,找到目标应用池
- 右键选择「高级设置」
- 将「启用32位应用程序」设置为
True
4. 验证驱动注册状态
安装完成后,可通过以下步骤确认驱动是否成功注册:
- 以管理员权限打开命令提示符
- 执行命令:
reg query "HKEY_CLASSES_ROOT\Microsoft.ACE.OLEDB.12.0" - 若返回有效注册表项,说明驱动已正确注册
内容的提问来源于stack exchange,提问作者LahiruKalutotage
相关产品推荐
相关产品推荐

