写了一段使用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 (无需重启服务器)点击下载
一般安装完成后即可。查阅了其他的博客,发现有些需修改应用程序池、目标平台的位数。
1.打开VS,右键单击项目,点击属性(Properties)-> 生成(Build)-> 目标平台(Platform Target)-> x64后保存,重新部署网站。
2.远程连接至服务器打开iis,选中该应用的网站程序池,右键高级设置,将“启用32位应用程序”修改为True,点击确定。