未在本地计算机上注册“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后保存,重新部署网站。

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

  • 9
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值