Windows或SqlServerSSMS:未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序(AccessDatabaseEngine)
Windows或SqlServerSSMS:未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序(AccessDatabaseEngine)
环境:Win7、Win10 32位、Win10 64位系统
说明: C#以 oledb的方式读取excel时,xls格式的文件读取正常,但是xlsx格式的提示错误:未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序
解决办法:
1、下载对应组件安装:https://www.microsoft.com/zh-CN/download/details.aspx?id=13255
请下载非64位的AccessDatabaseEngine.exe 。
注意:要选择AccessDatabaseEngine.exe,而不是AccessDatabaseEngine_X64.exe,否则还会提示相同的错误!!!
(Tips:无论是32位还是64位操作系统和Office位数,都不能使用_X64的AccessDatabaseEngine。使用AccessDatabaseEngine.exe兼容性最好)
扩展阅读:
1). VS问题:C#来访问ACCESS或者Excel时,会用到数据库访问的组件,有时候会出现如下图所示的错误,即Microsoft.Jet.OLEDB.4.0,microsoft.ACE.oledb.12.0 provideer is not registered on the local machine.
解决方法:
2). IIS Excel读取
C#以 oledb的方式读取excel时,xls格式的文件读取正常,但是xlsx格式的提示错误:未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序
解决方法:
控制面板-管理工具中打开IIS(如果没有,在控制面板-程序与功能-启用或关闭windows功能-选择IIS功能),IIS中的设置如下:(设置完成后重新启动IIS)
修改连接字符串
支持xls:strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
支持xls和xlsx:strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=YES\"";
··