我正在尝试在按钮单击事件中从Excel文件获取数据。 我的连接字符串是:
string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\source\\SiteCore65\\Individual-Data.xls;Extended Properties=Excel 8.0;";
当我单击按钮时,出现以下错误:
“ Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册。
我不知道如何解决这个问题。 我的操作系统是Windows 7。
#1楼
当我在“配置管理器”对话框中将构建从“ x86”更改为“任何CPU”时,我在Visual Studio 2010中收到此错误/异常。 我了解此OLEDB数据库驱动程序仅适用于x86,并且不兼容64位。 将构建配置更改回x86对我来说解决了这个问题。
#2楼
这里提供了64位版本的“ Microsoft Access数据库引擎2010可再发行组件”,它使您可以使用“ Microsoft.ACE.OLEDB.12.0”提供程序:
http://www.microsoft.com/zh-cn/download/details.aspx?id=13255
如果您使用接受的答案中的下载内容,则需要按照@ backtestbroker.com的说明为x86进行构建。
#3楼
如果您使用的是64位,但是即使在安装AccessDatabaseEngine之后仍然遇到问题,请参阅这篇文章 ,它为我解决了这个问题。
即您需要安装此 AccessDatabaseEngine
#4楼
如果安装的“ AccessDatabaseEngine”仍然无法解决问题,请使用以下解决方案:
您需要将Active Solution Platform从“任何CPU”更改为“ x86”。
从CodeProject.com
#5楼
对于所有仍受此影响的人。
我一直在得到错误...
OLEDB error "The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine."
……如OP所述,Shailesh Sahu。
我有64位Windows 7。
我的问题出在PowerShell脚本内,但使用的连接字符串类似于OP的帖子,因此希望我的发现可以应用于C#,PowerShell和依赖于“ Microsoft.ACE.OLEDB”驱动程序的任何其他语言。
我按照有关此MS论坛线程的说明进行操作: http : //goo.gl/h73RmI
我首先尝试安装64位版本,然后从此页面http://www.microsoft.com/zh-cn/download/details.aspx?id=13255安装AccessDatabaseEngine.exe的32位版本
但是仍然没有喜悦。
然后,我在PowerShell中运行以下代码(来自SQL Panda的网站http://goo.gl/A3Hu96 )
(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION
...这给了我这个结果(为简便起见,我删除了其他数据源)...
SOURCES_NAME SOURCES_DESCRIPTION
------------ -------------------
Microsoft.ACE.OLEDB.15.0 Microsoft Office 15.0 Access Database Engine OLE DB Provider
如您所见,我有Microsoft.ACE.OLEDB。 15 .0(十五)不是Microsoft.ACE.OLEDB。 12 .0(十二)
因此,我将连接字符串修改为15并成功了。
因此,快速的PowerShell片段演示了如何对版本进行软编码...
$AceVersion = ((New-Object System.Data.OleDb.OleDbEnumerator).GetElements() | Where-Object { $_.SOURCES_NAME -like "Microsoft.ACE.OLEDB*" } | Sort