Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net ';微软.ACE.OLEDB.12.0';提供程序未在本地计算机上注册_.net_Excel_Aceoledb - Fatal编程技术网

.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为我解决了问题。

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

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


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

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


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

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


      i、 e.如果您使用的是64位,但在安装AccessDatabaseEngine之后仍然存在问题,则需要安装

      ,请参阅,它为我解决了问题

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

      ,以下是解决方案:

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

      从CodeProject.com

      如果安装的“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版本,并使用适当的版本号。

      适用于所有仍受此影响的人

      我一直在犯错误

      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位机器上一切都运行顺利

      syp_dino

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


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

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

      我的问题
      (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"
      
      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 (x86)\Common Files\microsoft shared\OFFICE15\Csi.dll
      c:\Program Files\Common Files\Microsoft Shared\OFFICE15\Csi.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
      
                      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;