在ASP.NET中导出excel表功能,在本机上调试通过,但是部署到服务器上时出错。
错误信息为
解决办法:
1、使用的动态库不对
将Web.Config文件中的如下代码删除:
<add assembly="office, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"/>
<add assembly="Microsoft.Vbe.Interop, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"/>
<add assembly="stdole, Version=7.0.3300.0, Culture=neutral, ublicKeyToken=B03F5F7F11D50A3A"/></assemblies>
然后重新引用动态库。
在“添加引用”对话框中选择“.NET”选项卡,然后选择“Microsoft.Office.Interop.Excel”组件
2、在DCOM组件服务中给MICROSOFT.EXCEL组件 赋予ASP.NET的操作权限。
操作步骤如下:
⑴“开始 → 程序 → 管理工具 → 组件服务”。
⑵ 展开“组件服务 → 计算机 → 我的电脑”,右击“我的电脑”,选择“属性”。
⑶ 在弹出的“我的电脑 属性”框中,选择“com安全”。
⑷ 在“访问权限”中,点击“编辑限制”,在弹出的对话框中选择“ASP.NET”用户(或“NETWORK Service”用户),并勾选中所有“允许”项。
⑸ 在“启动和激活权限”中,点击“编辑限制”,在弹出的对话框中选择“ASP.NET”用户(或“NETWORK Service”用户),并勾选中所有“允许”项。
⑹ 返回“组件服务”窗口,在“我的电脑 → DCOM配置”下,右击“MICRSOFT EXCEL 应用程序”,选择“属性”。
⑺ 在弹出的对话框中选择安全项,把“启动和激活权限”、“访问权限”、“配置权限”选择为“自定义”
⑻ 单击“启动和激活权限”、“访问权限”、“配置权限”每一项的“编辑”,在弹出的对话框中添加“ASP.NET”用户(或“NETWORK Service”用户)。同时把允许中的钩全部选择上。
⑼ 回到“MICRSOFT EXCEL 应用程序 属性”窗口,在“标识”项中选择“启动用户”,如下所示:
⑽ “确定”后即可。
按照如上操作重新运行仍出错,错如下:
“/Web”应用程序中的服务器错误。
--------------------------------------------------------------------------------
检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80040154。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Runtime.InteropServices.COMException: 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80040154。
源错误:
行 302: resp = Page.Response;
行 303:
行 304: Microsoft.Office.Interop.Excel.Application xls = new Microsoft.Office.Interop.Excel.Application();
行 305: int rowIndex = 1;
行 306: int colIndex = 1;
源文件: e:/Web/Mainstatnce/PayRecord.aspx.cs 行: 304
堆栈跟踪:
[COMException (0x80040154): 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80040154。]
Mainstatnce_PayRecord.export_Click(Object sender, ImageClickEventArgs e) in e:/Web/Mainstatnce/PayRecord.aspx.cs:304
System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e) +86
System.Web.UI.WebControls.ImageButton.RaisePostBackEvent(String eventArgument) +115
System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1746
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.1433; ASP.NET 版本:2.0.50727.1433
在网上查找资料发现导出excel的步骤第一步都是先在服务器上安装excel。
在服务器上尝试安装excel,安装完毕后重新运行,一切ok。