.net ';微软.ACE.OLEDB.12.0';提供程序未在本地计算机上注册

.net ';微软.ACE.OLEDB.12.0';提供程序未在本地计算机上注册,.net,excel,aceoledb,.net,Excel,Aceoledb,我试图从一个按钮单击事件的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”提供程序未在本地计算机上注册 我不知道如何解决这个问

我试图从一个按钮单击事件的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。

嗯,你需要安装它。您正在寻找:

  • 这个

我在Visual Studio 2010中将“配置管理器”对话框中的内部版本从“x86”更改为“任意CPU”时遇到此错误/异常。据我所知,这个OLEDB数据库驱动程序只能在x86中工作,并且不兼容64位。将生成配置更改回x86为我解决了问题。

此处提供了64位版本的“Microsoft Access数据库引擎2010可再发行版”,允许您使用“Microsoft.ACE.OLEDB.12.0”提供程序:


如@backtestbroker.com所指出的,如果您使用从已接受答案下载的内容,则需要为x86构建。

如果您使用64位,但即使在安装AccessDatabaseEngine后仍存在问题,请参阅,它为我解决了问题

i、 e.如果安装的“AccessDatabaseEngine”仍然没有帮助,则需要安装

,以下是解决方案:

您需要将活动解决方案平台从“任意CPU”更改为“x86”


来自CodeProject.com

,所有仍受此影响的人

我一直在犯错误

OLEDB error "The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine."
…如OP所述,Shailesh Sahu

我有64位Windows7

我的问题在PowerShell脚本中,但使用的是连接字符串,类似于OP的帖子,因此希望我的发现可以应用于C#、PowerShell和任何依赖“Microsoft.ACE.OLEDB”驱动程序的其他语言

我遵循了MS论坛帖子上的说明:

我首先尝试安装64位版本,然后在此页面安装32位版本的AccessDatabaseEngine.exe

但仍然没有快乐

然后我在PowerShell中运行了下面的代码(来自SQL Panda的站点)

…这给了我这个结果(为了简洁起见,我删除了其他数据源)

如您所见,我有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-Object SOURCES_NAME -Descending | Select-Object -First 1 SOURCES_NAME).SOURCES_NAME

$connString = "Provider=$AceVersion;Data Source=`"$filepath`";Extended Properties=`"Excel 12.0 Xml;HDR=NO`";"
修改以选择最新的ACE版本(如果不止一个)

希望任何发现这一点的人现在都可以检查安装了什么OLEDB版本,并使用适当的版本号。

syp_dino

您为“Microsoft.ACE.OLEDB.12.0”提供程序建议的解决方案未在本地计算机上注册”错误是将活动解决方案平台从“任意CPU”更改为“x86”


当我执行这些步骤,重新构建解决方案,抓取EXE并将其放入网络时,在Windows7 64位机器上一切都运行顺利

我遵守了别人的指示;安装此修补程序,安装该修补程序以及Microsoft Access数据库引擎2010

我的问题是,我在我的机器上的两个站点中使用了相同的库(linq2sql);一个有效,一个无效

最终,我发现我必须为我的非工作站点在apppool的高级设置中“启用32位应用程序”


现在一切正常。

我在阅读Excel文件时也遇到类似问题

问题的历史:

由于内存需求,我们最近将应用程序从32位迁移到64位。为此,我们将Windows7从32位迁移到64位。但我们还是在机器上安装了32位office

因为,我们在将Excel数据导入应用程序时遇到了这个问题

解决方案

我下载了64位版本的,并安装了参数为

AccessDatabaseEngine_x64.exe/被动

没有任何代码更改,我的问题得到解决

注:


在64位操作系统和64位office上,没有此修复程序,我的功能运行良好。只有当我们的应用程序在64位操作系统上运行并且安装了32位office时,才需要此修复程序。

也可以尝试以下步骤

在SQL Server中, 1.打开一个数据库 2.在“服务器对象”选项中使用Clic 3.链接服务器中的Clic 4.“供应商”中的Clic 5.在“Microsoft.ACE.OLEDB.12.0”中使用Clic格式 6.取消选中所有选项并关闭。

1。)使用验证连接字符串

2.)确保安装了正确的数据库引擎。这是帮助我的两个数据库引擎

3.)您的构建目标平台可能是“任何CPU”存在问题,它可能需要是“X86”(属性、构建、平台目标)。

取决于使用您可以安装的连接的应用程序(32/64位)

总结:

  • 2007-2016年的所有办公室都包含提供程序“Microsoft.ACE.Oledb.12.0”
  • 根据应用程序体系结构,选择适当的运行时引擎(32/64)
  • 使用32位和64位shell中的powershell命令检查提供程序:

    (New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION 
    
  • 您将看到您的系统可以使用哪个提供商

长话短说: 这些字符串可以在中找到

例如,在安装了32位驱动程序的64位系统上

strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE12\MSO.DLL" | findstr "ACE.O"
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE14\MSO.DLL" | findstr "ACE.O"
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE15\MSO.DLL" | findstr "ACE.O"
即使在即将到来的2016年办公室

c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\MSO.DLL
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\MSO.DLL
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\Csi.dll
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\Csi.dll
你会找到字符串

  • Microsoft.ACE.OLEDB

  • Microsoft.ACE.Oledb.12.0

Office 2013还附带了csi.dll

c:\Program Files (x86)\Common Files\microsoft shared\OFFICE15\Csi.dll
c:\Program Files\Common Files\Microsoft Shared\OFFICE15\Csi.dll
其中包含“Microsoft.ACE.OLEDB.15.0

和办公室2016

c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\MSO.DLL
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\MSO.DLL
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\Csi.dll
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\Csi.dll
其版本为“Microsoft.ACE.OLEDB.16.0

记住要安装
                var fileName = string.Format("{0}", openFileDialog1.FileName);
            //var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);
            var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties='Excel 12.0 Xml;HDR=YES'", fileName);
            var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);
            var ds = new DataSet();

            adapter.Fill(ds, TableNmae);

            DataTable data = ds.Tables[TableNmae];
            dg1.DataSource = data;