C# 打开excel错误:System.Runtime.InteropServices.COMException(0x80080005):检索具有CLSID的组件的COM类工厂
我有一个C#net网络应用程序。我希望用户单击网页上的按钮,服务器打开excel电子表格并向其中写入数据,用户保存文档。这可以使用VisualStudio2010和Office2010在本地工作。但是,在我的服务器上,出现以下错误: System.Runtime.InteropServices.COMException(0x80080005):检索CLSID为{00024500-0000-0000-C000-0000000000 46}的组件的COM类工厂失败,原因是以下错误:80080005服务器执行失败(HRESULT异常:0x80080005(CO_E_服务器执行失败)) 我已经研究并找到了大量的答案,说明如何打开dcomconfig并将具有权限的用户添加到Microsoft Excel应用程序。我的站点设置为passthrough安全,所以我添加了我自己;我是服务器上的管理员,因此我确保管理员可以访问;我还添加了应用程序池默认的网络服务;还有ASP.NET机器帐户;并且,为了以防万一,添加了应用程序连接到数据库时使用的帐户。我仍然得到完全相同的错误 我的服务器是64位的,Office 2007,IIS 7 我的代码是:C# 打开excel错误:System.Runtime.InteropServices.COMException(0x80080005):检索具有CLSID的组件的COM类工厂,c#,.net,excel,C#,.net,Excel,我有一个C#net网络应用程序。我希望用户单击网页上的按钮,服务器打开excel电子表格并向其中写入数据,用户保存文档。这可以使用VisualStudio2010和Office2010在本地工作。但是,在我的服务器上,出现以下错误: System.Runtime.InteropServices.COMException(0x80080005):检索CLSID为{00024500-0000-0000-C000-0000000000 46}的组件的COM类工厂失败,原因是以下错误:80080005服
{
try
{
Excel.Application xXL = null;
Excel.Workbook xWB = null;
Excel.Worksheet xSheet = null;
xXL = new Excel.Application();
}
catch (Exception ex)
{
Response.Write(ex.ToString());
}
}
办公室自动化-不建议使用这些Excel.Application和Excel.Workbook对象,也不建议使用。看: Microsoft目前不建议也不支持从任何无人参与、非交互式客户端应用程序或组件(包括ASP、ASP.NET、DCOM和NT服务)自动化Microsoft Office应用程序,因为在该环境中运行Office时,Office可能会表现出不稳定的行为和/或死锁 这意味着,即使您解决了服务器端/客户端问题,您仍然在玩火,因为有些场景可能会工作,有些场景不会,有些场景有时会工作,有时会导致您的进程挂起,因为当没有控制台用户登录到服务器时,Excel会尝试打开弹出通知。相信我,不要这样做 我提供的链接列出了您尝试执行的操作的几种替代方法,但假设您计划为用户构建相对简单的Excel工作表,那么最好只创建一个表并将其发送回具有适当标题的用户(类似于
Response.ContentType=“application/vnd.ms Excel”
)这样,返回的数据将默认由Excel打开。
你可以看到这个问题的更多答案
您的服务器是否安装了Office,或者您是否已随应用程序发布了LIB?有点不清楚:此.NET代码在哪里运行?作为ASP.NET网页的一部分?在服务器端?服务器上是否安装了Excel?您知道服务器端代码不支持Office Automation吗?另外,您确定应用程序中没有混淆服务器端和客户端模型吗?如果代码在服务器上打开Excel,则访问该网页的用户将看不到该代码,它不在他的计算机上。您需要确保目标服务器上安装了/正确的程序集版本。您是否复制了本地程序集或在目标服务器上的
GAC
中安装了这些程序集对于安装了x86 Office的x64计算机,您可能需要运行“%windir%\SysWOW64\mmc comexp.msc/32”要访问x86版本的DCOMCNFG