C#读取Excel The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the loc

sunnieni 2012-09-14 05:02:46
在服务器调试的时候,读取Excel没有问题,但是一旦发布,就不行了。
报错:The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine.
我觉得是不是应用池环境和 Visual Web Developer Web Server测试环境不同的问题?
我的环境是XP+Visual Studio 2005.
不知道该怎么设置IIS.

代码:
DataSet ds = null;
string strconn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + savefilepath + ";" + "Extended Properties='Excel 8.0;HDR=NO;IMEX=1;'";
OleDbConnection conn = new OleDbConnection(strconn);
try
{
conn.Open();
OleDbDataAdapter myCommand = new OleDbDataAdapter("select * from [Sheet1$]", strconn);
ds = new DataSet();
myCommand.Fill(ds, "[sheet1$]");
EUCnameTextBox.Text = ds.Tables[0].Rows[6][1].ToString();

}
finally
{

conn.Close();
}
...全文
570 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2012-09-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

这个东东是需要在IIS服务器端,设置Office Excel的访问权限。
[/Quote]

根本用不到Office ,设置什么?难道你让人家安装Office ?
李儒福 2012-09-19
  • 打赏
  • 举报
回复
这个东东是需要在IIS服务器端,设置Office Excel的访问权限。
孟子E章 2012-09-19
  • 打赏
  • 举报
回复
但是一旦发布,就不行了。

http://www.microsoft.com/zh-cn/download/details.aspx?id=13255
要安装在发布的服务器上

看你的服务器上32位还是64位的,另外,iis的应用程序池是32位运行的还是64位运行的,
安装的版本要与你iis运行的版本(iis的应用程序池是32位运行的还是64位运行的)一致

这个是Excel 2007吧?貌似也没用用的?

这个是兼容所有版本的读取方法,


我一旦用了方法1,就连网站都打不开了,变成 Sever Unavailable.?

Sever Unavailable.跟连接没关系,你打开不连接excel的页面不发生 Sever Unavailable.?


另外,检查iis中asp.net版本是否是2.0

另外,不需要权限设置
sunnieni 2012-09-19
  • 打赏
  • 举报
回复
自己顶一下,有高手吗?

怀疑是不是权限问题?
需要在ASP.NET设置里输入服务器用户名和密码吗?
这个是报错后的
Stack Trace:

[InvalidOperationException: The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.]
System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr, DataSourceWrapper& datasrcWrapper) +549
System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) +151
System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) +116
System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup) +45
System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +153
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +257
System.Data.OleDb.OleDbConnection.Open() +47
da_input.ImportBDAButton_Click(Object sender, EventArgs e) in d:\bda_bak\bda_input.aspx.cs:903
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +103
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +140
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +32
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3103
sunnieni 2012-09-19
  • 打赏
  • 举报
回复
汇报一下,最后是 net_lover 大师给帮忙解决了。原因是 服务器 IIS是64位的,需要改成32位的,再安装相应的 ASP.NET framework 2.0的32位版本。再在IIS6.0里启用。重启一下IIS就可以了。
sunnieni 2012-09-19
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

使用ADo.NET读取不用安装Office

更不用设Excel权限

什么也打不开了,不管是不是导入excel的页面,都是server unavailable..应该是iis配置的问题。跟到数据就没关系;了
[/Quote]

请问一下 IIS6应该如何配置呀 ?
sunnieni 2012-09-19
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

使用ADo.NET读取不用安装Office

更不用设Excel权限

什么也打不开了,不管是不是导入excel的页面,都是server unavailable..应该是iis配置的问题。跟到数据就没关系;了
[/Quote]

大师,能加个QQ或者MSN详细聊吗?
孟子E章 2012-09-19
  • 打赏
  • 举报
回复
使用ADo.NET读取不用安装Office

更不用设Excel权限

什么也打不开了,不管是不是导入excel的页面,都是server unavailable..应该是iis配置的问题。跟到数据就没关系;了

默默家的猪 2012-09-19
  • 打赏
  • 举报
回复
Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+savefilepath +";Extended Properties=\"Excel 12.0;HDR=NO;IMEX=1\

07是12.0 03是4.0 再就是把你的Microsoft.JET.OLEDB改成ACE

[Quote=引用 10 楼 的回复:]
引用 7 楼 的回复:

这个东东是需要在IIS服务器端,设置Office Excel的访问权限。


我照这个人的方法设了Excel权限,还是没用。
http://blog.csdn.net/return_false/article/details/7693620

而且这个人说调用excel版本可能有问题,但是我只装过2007难道他会调用2003?我需要装个Excel 2003……
[/Quote]
sunnieni 2012-09-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

这个东东是需要在IIS服务器端,设置Office Excel的访问权限。
[/Quote]

我照这个人的方法设了Excel权限,还是没用。
http://blog.csdn.net/return_false/article/details/7693620

而且这个人说调用excel版本可能有问题,但是我只装过2007难道他会调用2003?我需要装个Excel 2003吗?
sunnieni 2012-09-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

但是一旦发布,就不行了。

http://www.microsoft.com/zh-cn/download/details.aspx?id=13255
要安装在发布的服务器上

看你的服务器上32位还是64位的,另外,iis的应用程序池是32位运行的还是64位运行的,
安装的版本要与你iis运行的版本(iis的应用程序池是32位运行的还是64位运行的)一致

这个是Excel 2……
[/Quote]
http://www.microsoft.com/zh-cn/download/details.aspx?id=13255
这个已经安装过了,还是不行。

我的服务器是64位的,iis6应用程序池怎么看是32位还是64位?
我运行过这个
cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1
就是发布的网站 什么也打不开了,不管是不是导入excel的页面,都是server unavailable.

我IIS ASP.NET是 2.0的,但是我看了一下,我装了3.0 3.5 但是IIS里面不让我选其他版本。
和这个有关系的吗?

我按照这个人的方法设置了Excel权限 还是没用。
http://blog.csdn.net/return_false/article/details/7693620
sunnieni 2012-09-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

需要注册Com组件
[/Quote]

慢叫试一下。
sunnieni 2012-09-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

你这是在64位系统上保错的吧?

方法1,应用程序池以32位运行选择true
方法2,使用
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+savefilepath +";Extended Properties=\"Excel 12.0;HDR=NO;IMEX=1\"";

读取。需要先安装驱动
http://www.microso……
[/Quote]
我一旦用了方法1,就连网站都打不开了,变成 Sever Unavailable.
方法二,这个是Excel 2007吧?貌似也没用用的。
我猜测是不是framework的问题。
孟子E章 2012-09-14
  • 打赏
  • 举报
回复
你这是在64位系统上保错的吧?

方法1,应用程序池以32位运行选择true
方法2,使用
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+savefilepath +";Extended Properties=\"Excel 12.0;HDR=NO;IMEX=1\"";

读取。需要先安装驱动
http://www.microsoft.com/zh-cn/download/details.aspx?id=13255
  • 打赏
  • 举报
回复

61,653

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧