未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序 问题解决方案

写了一段使用OLEDB方式读Excel导入数据的代码,部署到服务器上运行时报错:未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序 

其原因是用到了如下代码的连接字符串

switch (strExtension)
{
    case ".xls":
        objConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strExcelPath + ";" + "Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1;\"");
        break;
    case ".xlsx":
        objConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strExcelPath + ";" + "Extended Properties=\"Excel 12.0;HDR=NO;IMEX=1;\"");
        break;
    default:
        objConn = null;
        break;
}

解决方法是在服务器上安装AccessDatabaseEngine (无需重启服务器)点击下载 

下载url:https://download.microsoft.com/download/2/4/3/24375141-E08D-4803-AB0E-10F2E3A07AAA/AccessDatabaseEngine_X64.exe

一般安装完成后即可。查阅了其他的博客,发现有些需修改应用程序池、目标平台的位数。

1.打开VS,右键单击项目,点击属性(Properties)-> 生成(Build)-> 目标平台(Platform Target)-> x64后保存,重新部署网站。

未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序 问题解决方案_第1张图片

未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序 问题解决方案_第2张图片

2.远程连接至服务器打开iis,选中该应用的网站程序池,右键高级设置,将“启用32位应用程序”修改为True,点击确定。

未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序 问题解决方案_第3张图片

你可能感兴趣的:(C#)