未在本地计算机上注册“ Microsoft.ACE.OLEDB.12.0”提供程序

在尝试从Excel文件获取数据时,遇到错误:' Microsoft.ACE.OLEDB.12.0'提供程序未在本地计算机上注册。该问题出现在x86和64位环境中。解决方案包括安装Microsoft Access Database Engine 2010可再发行组件的适当版本(32位或64位),确保应用程序平台与安装的Office版本兼容,以及在某些情况下,更改IIS应用程序池设置以启用32位应用程序。此外,对于Web应用,可能需要确保IIS Express是以正确的位数运行的。
摘要由CSDN通过智能技术生成

我正在尝试在按钮单击事件中从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”。

OLEDB提供程序未在本地计算机上注册

从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-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版本并使用适当的版本号。


#6楼

syp_dino,

您为“ Microsoft.ACE.OLEDB.12.0'提供程序未在本地计算机上注册”建议的针对我的解决方案是将Active Solution Platform从“任何CPU”更改为“ x86”。

当我执行这些步骤,重新构建解决方案,抓取EXE并将其放置在网络上时,一切在Windows 7 64位计算机上都能顺利进行。


#7楼

我按照别人的指示去做。 安装此修补程序,安装该修补程序以及Microsoft Access Database Engine 2010。

我的问题是我在机器的2个站点中使用了相同的库(linq2sql)。 1个有效,而1个无效。

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

现在一切正常。


#8楼

当我们读取Excel文件时,我遇到类似的问题。

问题的历史记录:

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

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

解,

我下载了http://www.microsoft.com/zh-cn/download/details.aspx?id=13255的 64位版本,并安装了参数as,

AccessDatabaseEngine_x64.exe /被动

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

注意:

在64位操作系统和64位办公室上,没有此修复程序,我的功能就可以正常工作。 仅当我们的应用程序在64位OS上安装了32位Office的应用程序为64位运行时才需要此修复程序。


#9楼

也可以尝试这些步骤

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


#10楼

这取决于您已安装的Office,如果您具有x64位Office,则必须将应用程序编译为x64以使其能够运行,因此,如果要使其在x36上运行,则必须安装Office x86以接受,我尝试过以上所有解决方案,但直到我意识到我拥有Office x64bit才有效,因此我将应用程序构建为x64并开始工作


#11楼

1.)使用ConnectionStrings.com验证您的连接字符串。

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

Microsoft Access数据库引擎2010可再发行

2007 Office System驱动程序:数据连接组件

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


#12楼

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

摘要:

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

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

长话大说:可以在http://live.sysinternals.com/strings.exe中找到字符串

例如。 在安装了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

你会发现琴弦

  • 微软ACE

  • 微软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

和Office 2016

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 ”版本


#13楼

请记住在Web应用程序的服务器上安装AccessDatabaseEngine


#14楼

我安装了MS驱动程序,但仍然对我不起作用。 然后,我找到了解决该问题的博客文章 。 在此处阅读,否则将这两个图像(从该帖子链接)用作TLDR摘要:

在此处输入图片说明

在此处输入图片说明


#15楼

您需要检查的第一件事是应用程序的构建配置。

  • 如果您是在x86平台下构建项目的 ,那么为了解决问题,您应该在计算机上安装以下软件包:

    1. 为了使用“ Microsoft.ACE.OLEDB.12.0”提供程序,必须首先安装Microsoft Access Database Engine 2010可再发行组件 ,此安装位于: http : //www.microsoft.com/download/en/details.aspx ?id = 13255

      安装完成后,请尝试运行您的应用程序,如果这样可以很好地解决问题,请继续执行步骤2。

    2. 下一步是一个无法解释的变通办法,即使它是Office 2007的数据连接组件,也可以在Office 2010中使用。我不太确定为什么这样做,但事实证明它可以工作,并且几乎在所有情况下都可以工作。 您需要安装2007 Office System驱动程序:数据连接组件 ,该安装位于: http : //www.microsoft.com/download/en/confirmation.aspx?id=23734

      安装完成后,请尝试运行您的应用程序,这应该可以解决该问题。

  • 如果您尝试运行在x64或AnyCPU平台下构建应用程序 ,我建议您首先验证它是否在x86平台下按预期运行。 如果它不能在该x86平台上运行,请执行第一部分中的步骤并验证它是否按预期运行。

    我确实读过,包括OLEDB数据库驱动程序在内的MS Access驱动程序仅在x86平台下有效,在x64或AnyCPU平台下不兼容。 但这似乎是不正确的。 我在构建x86时验证了我的应用程序正在运行,然后使用被动标志安装了Access Database Engine。

    1. 首先在本地下载文件您可以在此处下载安装: http : //www.microsoft.com/zh-cn/download/details.aspx?id=13255
    2. 使用带有“ / passive”标志的命令提示符进行安装。 在命令提示符下,运行以下命令:'AccessDatabaseEngine_x64.exe / passive'

    经过这两个步骤,在x64或AnyCPU构建配置中构建后,我设法运行了我的应用程序。 这似乎解决了我的问题。

注意:步骤的顺序似乎有所不同,因此请相应地遵循。


#16楼

我遇到了同样的问题,但是在这种情况下,我的计算机上已经安装了microsoft-ace-oledb-12-0-provider ,并且对于开发的其他应用程序运行正常。

这些应用程序与我遇到问题的应用程序之间的区别是,旧应用程序在“ 本地IIS ”上运行,而有错误的应用程序在“ IIS Express (从Visual Studio运行)”上。 所以我所做的是-

  1. 右键单击项目名称。
  2. 转到属性
  3. 转到右侧的“ Web”选项卡。
  4. 在服务器下,选择本地IIS,然后单击创建虚拟目录按钮。
  5. 再次运行该应用程序,它可以正常工作。

#17楼

我可以按照本文中的步骤解决此问题: http : //www.mikesdotnetting.com/article/280/solved-the-microsoft-ace-oledb-12-0-provider-is-not-registered-在本地机器上

对我而言,关键点是:

使用IIS进行调试时,

默认情况下,Visual Studio使用32位版本。 您可以在Visual Studio中通过转到工具»选项»项目和解决方案»Web项目»常规来更改此设置,然后选择

“将IIS Express的64位版本用于网站和项目”

在检查了该选项之后,然后将项目的平台目标设置回“ Any CPU”(我在故障排除过程中将其设置为x86),就能够克服该错误。


#18楼

  • 几天来我一直在面对同样的问题。 我确实为64位安装了OLEDB驱动程序,还尝试了32位,这些都可以在Microsoft网站上找到。
  • 我尝试重新安装Office 64位版本,但还是不起作用。 尝试允许IIS池中的32位应用程序为true。
  • 尝试将项目环境更改为X86,AnyMachine,混合。 几乎尝试了所有我可以在互联网上找到的补丁。 但是所有解决方案都令我失望。
  • 尽管我终于知道我们正在下载的提供程序是最新的,并且也没有使用它。
  • 我卸载了它并安装了oledb驱动程序14.0.7015.1000 。我没有它的链接,因为我是从公司资源那里获得的,您可能必须使用Google进行搜索,但它可以工作。 我来到了这个Microsoft的下载链接 ,它也起作用了...但是它是版本14.0.6119.5000,但是它起作用了。

#19楼

您需要根据Office安装的具体程度将解决方案平台从“任何CPU”更改为“ x86”或“ x64”。

步骤如下:

  1. 在解决方案资源管理器中右键单击解决方案文件: 在此处输入图片说明

    1. 单击配置管理器。
    2. 单击“活动平台”下拉列表,如果x86已经存在,则选择它,否则单击“新建”。 在此处输入图片说明

    3. 从新平台下拉列表中选择x86或x64: 在此处输入图片说明

编译并运行您的应用程序。


#20楼

我的计算机上已经安装了Microsoft Access Database Engine 2010可再发行组件,但是仍然收到Microsoft ACE OLEDB Provider错误。

然后我回想起我最近已升级到Office 2016,因此,也许我应该尝试重新安装Microsoft Access Database Engine 2010可再发行组件 。 这解决了我机器上的问题。

因此,如果您已升级到MS Office的不同版本,或者甚至修复/重新安装了MS Office,请在浪费时间查找其他修补程序之前,尝试重新安装Microsoft Access Database Engine 2010 Redistributable 。 祝好运!


#21楼

如果要调试Web项目,只需确保IIS Express以32位或64位运行,具体取决于您的项目设置。

工具>选项>项目和解决方案> Web项目

然后从中检查(或取消选中)“使用​​IIS Express的64位版本...”


#22楼

只需下载并安装以下Access DB引擎(根据您的计算机配置为X86或X64 :),然后看一下魔术吧:)

https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=13255


#23楼

尝试使用SSMS 2014将数据从excel文件(xlsx)导入到SQL Server DB时遇到此问题。

2007 Office System驱动程序:数据连接组件的安装对我有用。


#24楼

如果在尝试从ASP.NET应用程序使用ACE时收到此错误,则最可能的原因是您安装了32位版本之一。 默认情况下,在64位操作系统上的IIS将在64位工作进程中运行应用程序。 64位进程无法加载32位DLL。 当对ACE提供程序进行调用时,该64位进程将尝试查找64位DLL。 如果不存在,则会出现错误消息,将您带到这里。

在这种情况下,您有两个选择。 首先,您可以安装2010 64位版本。 如果安装了2007 32位版本,则只需在其旁边安装2010 64位版本。 如果已安装32位版本的2010,则需要将其卸载并下载并安装64位2010版本。 您不能同时安装32位和64位版本的2010提供程序。 如果要在开发计算机上执行安装,则任何现有Office安装的位数也可能会限制您。

第二个选项是更改IIS中的应用程序池以启用32位应用程序。 如果您使用的是IIS的完整版,则可以使用管理工具执行此操作(控制面板»管理工具»Internet信息服务(IIS)管理器)。

欲了解更多信息,请参考以下链接


#25楼

首先,验证您的系统中安装了哪个版本的microsoft.ace.oledb.12.0。

在以下路径中检入C:\\ Program Files \\ Common Files \\ Microsoft Shared \\ OFFICE14 \\ ACEOLEDB.DLL --64位已安装

在以下路径中检入C:\\ Program Files(x86)\\ Common Files \\ Microsoft Shared \\ OFFICE14 \\ ACEOLEDB.DLL --x86位已安装

如果已安装(x86),则使用配置管理器将解决方案平台更改为x86,将x64更改为x64。

如果不可用,请使用以下链接进行安装

https://www.microsoft.com/zh-cn/download/details.aspx?id=23734


#26楼

现在这对我有用。

  1. 访问此页面,然后下载适合您的计算机的软件包(AccessDatabaseEngine.exe或AccessDatabaseEngine_X64.exe)
  2. 安装。
  3. 享受...您的代码现在可以使用了...

但是对于您的应用程序包,您可以使用以下任何解决方案:

  1. 进入“ C:\\ Program Files(x86)\\ Common Files \\ microsoft shared”或“ C:\\ Program Files \\ Common Files \\ Microsoft Shared”,然后将“ OFFICE14”目录放在包文件的相同位置。

要么

  1. 在安装包中附加两个项目(在item1中)。

#27楼

我遇到了同样的问题。 转到解决方案属性,然后将任何CPU更改为x86,我认为它可以完成工作。


#28楼

执行以下2个步骤:1.在此菜单中:项目-> yourproject属性...->生成:取消选中“首选32位” 2.在connectionString中:在扩展属性之前和之后写注释,例如:Extended Properties =' Excel 12.0 Xml; HDR = YES'

                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;

#29楼

尽管给出了许多答案,但我所遇到的问题尚未提及。

  • 我的方案: 64位应用程序,Win10-64,Office 2007 32位安装。
  • 从MS下载的32位安装程序AccessDatabaseEngine.exe的安装报告成功,但未安装,已通过此处上面发布内容之一的Powershell脚本进行了验证。

  • 64位安装程序AccessDatabaseEngine_X64.exe的安装报告了令人震惊的错误消息:

在此处输入图片说明

很简单的解决方案已经被发现这里在使用Autodesk的网站。 只需将参数/ passive添加到命令行字符串,如下所示:

AccessDatabaseEngine_X64.exe /被动

安装成功,OleDb驱动程序正常工作。

我使用OleDb处理的Excel文件是xlsx类型,由EPPlus 4.5生成并由Excel 2007修改。


#30楼

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值