.net ';微软.ACE.OLEDB.12.0';提供程序未在本地计算机上注册
我试图从一个按钮单击事件的Excel文件中获取数据。我的连接字符串是:.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”提供程序未在本地计算机上注册 我不知道如何解决这个问
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。嗯,你需要安装它。您正在寻找:
- 这个
如@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
- 您将看到您的系统可以使用哪个提供商
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
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;