首页 新闻 会员 周边

.net读取Excel报错:未在本地计算机上注册“Microsoft.ACE.OleDb.12.0”提供程序

0
悬赏园豆:10 [已解决问题] 解决于 2012-04-12 13:01

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应用程序池里找不到这个高级设置项

xiaoliangkuai的主页 xiaoliangkuai | 初学一级 | 园豆:154
提问于:2012-04-06 09:59
< >
分享
最佳答案
2

谢谢各位回答,捣鼓了几天,总于好了,将IIS应用程序池里的预定义账户改为本地系统后解决,看来还是权限问题,有空了研究下本地系统账户和网络账户的区别

xiaoliangkuai | 初学一级 |园豆:154 | 2012-04-12 13:00
其他回答(7)
0

安裝一下 office 。

收获园豆:5
無限遐想 | 园豆:3740 (老鸟四级) | 2012-04-06 10:04

回复这么快,谢谢!同一台机器调试状态是好的,说明应该不是office的问题,只是一到IIS里就出错了,是否是IIS或者网站配置的问题

支持(0) 反对(0) xiaoliangkuai | 园豆:154 (初学一级) | 2012-04-06 10:13

@xiaoliangkuai: 你 同一個機器上 有 安裝 office,而iis上沒有安裝哦。

你也可以註冊 一下那個控件。我 也 只是安裝了office。沒有做其他設置。iis什麽版本?

支持(0) 反对(0) 無限遐想 | 园豆:3740 (老鸟四级) | 2012-04-06 10:28

@無限遐想: 

请教怎么注册?我的是IIS6.0,WinServer2003系统

支持(0) 反对(0) xiaoliangkuai | 园豆:154 (初学一级) | 2012-04-06 10:34

@xiaoliangkuai: 對了。我的鏈接 是用的 Provider=Microsoft.Jet.OLEDB.4.0,可以不用註冊那個控件。如果是上面的,你需要註冊你的控件。regsvr32 /u netshare.ocx。在cmd中。

支持(0) 反对(0) 無限遐想 | 园豆:3740 (老鸟四级) | 2012-04-06 10:39

@xiaoliangkuai: 请问你是怎么解决的?我也遇到和你一样的问题了。

支持(0) 反对(0) denyscolar | 园豆:6 (初学一级) | 2013-09-27 16:51
0

服务器上装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

收获园豆:1
邀月 | 园豆:25475 (高人七级) | 2012-04-06 10:57
0

连接字符串有问题,你的excel是什么版本的

收获园豆:2
☆№忧忧★♂ | 园豆:32 (初学一级) | 2012-04-06 17:41
0

解决访问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提供程序

收获园豆:1
Ron Ngai | 园豆:296 (菜鸟二级) | 2012-04-08 10:57
1

直接使用NPIO,独立于EXCEL操作后缀xml的文件,操作2010就用OpenXml

收获园豆:1
Halower | 园豆:1723 (小虾三级) | 2012-04-08 14:04
0

将IIS应用程序池里的预定义账户改为本地系统后解决   这个是在哪改的啊  我怎么找不到这个选项啊

czhansong | 园豆:202 (菜鸟二级) | 2013-06-13 16:39
0

如果想用x64,不知要如何配置呢?毕竟今后x64是服务器主流

cloud.hy | 园豆:204 (菜鸟二级) | 2013-10-17 12:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册