打开excel错误:System.Runtime.InteropServices.COMException(0x8008
本文关键字:InteropServices COMException 0x8008 Runtime System excel 错误 打开 | 更新日期: 2023-09-27 17:57:55
我有一个C#.net web应用程序。我希望用户点击网页上的按钮,服务器打开excel电子表格并向其写入数据,用户保存文档。这可以在本地使用Visual Studio 2010和Office 2010。然而,在我的服务器上,我收到了这个错误:
System.Runtime.InteropServices.COMException(0x80080005):由于以下错误,检索CLSID为{00024500-0000-0000-C000-000000000046}的组件的COM类工厂失败:80080005服务器执行失败(HRESULT中的异常:0x8008000 5(CO_E_Server_EXEC_FAILURE))。
我已经研究并找到了大量的答案,说明打开dcomconfig并添加具有Microsoft Excel应用程序权限的用户。我的网站设置为通过安全,所以我添加了自己;我是服务器上的管理员,所以我确保管理员可以访问;我还添加了网络服务的应用程序池默认值;也是ASP.NET计算机帐户;为了以防万一,添加了应用程序连接到数据库时使用的帐户。我仍然会得到完全相同的错误。
我的服务器是64位的,Office 2007,IIS 7。
我的代码是:
{
try
{
Excel.Application xXL = null;
Excel.Workbook xWB = null;
Excel.Worksheet xSheet = null;
xXL = new Excel.Application();
}
catch (Exception ex)
{
Response.Write(ex.ToString());
}
}
- 在DCOMCNFG中,右键单击"我的电脑"并选择属性
- 转到组件/MyComputer/DCOMConfig
- 转到Microsoft Excel应用程序属性"安全性"
- 在启动和激活权限中,单击"Custamize"并将网络服务添加到其中,并授予其"本地启动"answers"本地激活"权限。给予与Acess相同的权限和共同配置权限按"确定",就这样。我现在可以运行我的应用程序了
Office自动化-不建议使用这些Excel.Application和Excel.Workbook对象,Microsoft也不支持这些对象。外观:
Microsoft目前不建议也不支持从任何无人参与的非交互式客户端应用程序或组件(包括ASP、ASP.NET、DCOM和NT服务)自动化Microsoft Office应用程序,因为在这种环境中运行Office时,Office可能会表现出不稳定的行为和/或死锁。
这意味着,即使你解决了服务器端/客户端的问题,你仍然在玩火,因为有些场景可能会奏效,有些则不会,有些则有时会奏效,有时会导致你的进程挂起,因为Excel试图在没有控制台用户登录服务器时打开弹出通知。相信我,不要这么做。
我提供的链接列出了几种替代方法,但假设您计划为用户构建相对简单的Excel工作表,您最好只创建一个CSV文件,并将其与相应的标题(类似于Response.ContentType="application/vnd.ms-excel"
)一起发送回用户,以便Excel默认打开返回的数据。你可以在这里看到这个问题的更多答案。