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

在窗口服务器2008 R2上传我的asp.net应用程序之后,我得到了下面的错误

“Microsoft.Jet.OLEDB.4.0”提供程序未在本地计算机上注册。

我用下面的oleDbConnection类来读取excel文件

OleDbConnection excelConn = null; try { if (System.IO.Path.GetExtension(fileName) == ".xlsx") { excelConn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + "; Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'"); } else { excelConn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + "; Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'"); } excelConn.Open(); DataTable dt = new DataTable(); dt = excelConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); 

谷歌search后,我发现我需要安装2007年的Office系统驱动程序,所以我也试过,但是我得到同样的错误。

昨天,我面临同样的问题。

下面的步骤解决了我的问题:

  1. 安装了这个64位驱动程序Microsoft Access数据库引擎2010 Redistributable
  2. 在应用程序池 – >属性上,将Enable 32 bit设置为True并使用Classic池。
  3. Provider=Microsoft.Jet.OLEDB.4.0更改为“ Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + "; Extended Properties='Excel 8.0;HDR=No;IMEX=1'
  4. 通过将target platform设置为Any CPU来构build您的项目。

我得到了@siva的解决scheme,他为我省下了很多生命。

不过,我想在下面分享屏幕截图,所以其他人可以看到哪里需要改变该设置

无论您用于应用程序的应用程序池是什么,请从IIS中的应用程序池中select它,然后右键单击该应用程序池并打开高级设置

在这里输入图像说明

并遵循@siva在他的回答中提到的步骤

Microsoft.Jet.OLEDB.4.0提供程序未在本地计算机上注册

Amphis Customerdevise用于运行Windows XP,Windows Vista,Windows 7或Windows 8 Pro的32位或64位PC,但在Windows XP 64位(可能还有其他操作系统)上,某些Microsoft OLEDB DLL有可能未被注册。

解决scheme1:p

解决scheme是手动注册这些DLL。

转到开始 – >运行,然后inputcmd,这将启动命令提示符(也可从“开始” – >“程序” – >“附件” – >“命令提示符”

键入cd ..然后按返回typescd ..然后再按回车(继续操作直到提示符显示:>)

现在你需要去一个可能是c:\ windows \ system32的特殊文件夹,或者它可能是c:\ winnt \ system32或者它可能是c:\ windows \ sysWOW64尝试input这些文件,例如cd c:\ windows \ sysWOW64(如果它说系统找不到指定的path,请尝试下一个)cd c:\ windows \ system32 cd c:\ winnt \ system32当其中一个不会导致错误,停止,你已经find正确的文件夹

现在你需要通过input这些命令来注册OLE DB 4.0 DLL,并在每个命令后按回车

regsvr32 Msjetoledb40.dll regsvr32 Msjet40.dll regsvr32 Mswstr10.dll regsvr32 Msjter40.dll regsvr32 Msjint40.dll

解决scheme2:p

只需右键单击项目 – >属性 – >生成 – >从目标任何CPU改变到目标x86

– > F5,它会工作*