C#.net里做了一个导入Excel表格的功能,原理是先让用户把Excel上传到服务器上,然后再读取上传的Excel内容。在调试状态下运行一切正常,但是在IIS配置的站点里访问就报错:未在本地计算机上注册“Microsoft.ACE.OleDb.12.0”提供程序,找网上说的安装了AccessDatabaseEngine.exe 也没有解决问题,请高手指教,链接字符串是这样的:
string strCon = "provider=Microsoft.ACE.OleDb.12.0; Data Source ='" + Server.MapPath(folder + "/" + fileName) + "';Extended Properties='Excel 12.0;HDR=yes;IMEX=1';";
OleDbConnection conn = new OleDbConnection(strCon);
conn.Open();
运行到conn.open()那儿就报错
调试状态下或直接点击右键--在浏览器中查看就是正常的,但是一到IIS配置的站点里访问就报错,网上有人说设置下IIS应用程序:应用程序池 ------>选择高级设置 --------->启用32位应用程序 ------->true ,但是我的IIS应用程序池里找不到这个高级设置项
谢谢各位回答,捣鼓了几天,总于好了,将IIS应用程序池里的预定义账户改为本地系统后解决,看来还是权限问题,有空了研究下本地系统账户和网络账户的区别
安裝一下 office 。
回复这么快,谢谢!同一台机器调试状态是好的,说明应该不是office的问题,只是一到IIS里就出错了,是否是IIS或者网站配置的问题
@xiaoliangkuai: 你 同一個機器上 有 安裝 office,而iis上沒有安裝哦。
你也可以註冊 一下那個控件。我 也 只是安裝了office。沒有做其他設置。iis什麽版本?
@無限遐想:
请教怎么注册?我的是IIS6.0,WinServer2003系统
@xiaoliangkuai: 對了。我的鏈接 是用的 Provider=Microsoft.Jet.OLEDB.4.0,可以不用註冊那個控件。如果是上面的,你需要註冊你的控件。regsvr32 /u netshare.ocx。在cmd中。
@xiaoliangkuai: 请问你是怎么解决的?我也遇到和你一样的问题了。
服务器上装Offce太麻烦,而且配置过于复杂,建议使用第三方的开源工具,如NPOI,或Myxls等
http://www.cnblogs.com/downmoon/archive/2011/04/16/2017603.html
http://www.cnblogs.com/downmoon/archive/2011/05/30/2063258.html
连接字符串有问题,你的excel是什么版本的
解决访问Excel数据源时出现 未在本地计算机上注册Microsoft.ACE.OLEDB.12.0提供程序
1、确保安装了Microsoft.ACE.OLEDB.12.0驱动
http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fdcdb/AccessDatabaseEngine.exe
2、在vs中右击项目--》属性--》生成 下的 目标平台 改为x86
如果以上两个方法还是不行的话,用第三个方法
3、在对应的 IIS 应用程序池中,“设置应用程序池默认属性”右击/“高级设置”/"启用32位应用程序",设置为 true。
问题:未在本地计算机上注册Microsoft.ACE.OLEDB.12.0提供程序
直接使用NPIO,独立于EXCEL操作后缀xml的文件,操作2010就用OpenXml
将IIS应用程序池里的预定义账户改为本地系统后解决 这个是在哪改的啊 我怎么找不到这个选项啊
如果想用x64,不知要如何配置呢?毕竟今后x64是服务器主流