在ASP.Net中用于不同版本的Excel的连接string

我已经在ASP.Net中创build了一个系统来将多个excel文件合并为一个。 我用于此的不同连接string如下所示

switch (Extension) { case ".xls": //Excel 97-03 conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR={1};IMEX=1;'"; break; case ".xlsx": //Excel 07 conStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;HDR={1};IMEX=1;'"; break; } 

之前系统工作正常,但从今天开始给我错误

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

我是否需要在应用程序中包含任何特定的(新)dll,还是需要更改我的应用程序?

我试图合并的文件types是

Microsoft Excel 97-2003工作表(.xls)

以及你必须安装驱动程序为Excel,你可以find它在这里办公司司机

如果你在IIS上遇到相同的错误,那么你必须做一些在这个链接中提到的configuration

我也经历了同样的问题。 可能的原因是,远程服务器上有不同的IIS设置,IIS设置不同。 默认情况下,64位OS上的IIS在64位工作进程中运行应用程序,并且64位进程无法加载32位DLL。

检查下面的链接并在远程服务器IIS中进行更改。 (这回解决了我的问题)

已解决 – Microsoft.ACE.OLEDB.12.0提供程序未在本地计算机上注册