ASP.NET无法创建ActiveX组件

时间:2009-12-04 14:54:14

标签: asp.net excel activexobject

我有一个ASP.NET应用程序,允许用户每月将员工的缺席导出到Microsoft Excel。该应用程序当前正在生成以下异常

异常:无法创建ActiveX组件。

使用以下堆栈跟踪

System.Exception:无法创建ActiveX组件。 at Microsoft.VisualBasic.Interaction.CreateObject(String ProgId,String ServerName) 在H:\ Development \ pagec \ Visual Studio 2005 \ Projects \ HR \ ysnet2 \ Time \ ManagerSummary.aspx.vb中的HR.ManagerSummary.ExportToExcel():第935行 位于H:\ Development \ pagec \ Visual Studio 2005 \ Projects \ HR \ ysnet2 \ Time \ ManagerSummary.aspx.vb中的HR.ManagerSummary.btnExcel_Click(Object sender,EventArgs e):第891行 在System.Web.UI.WebControls.Button.OnClick(EventArgs e) 在System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) 在System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) 在System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,String eventArgument) 在System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) 在System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)

代码在CreateObject行失败。

    'Create the Excel object
    Dim objXL As Object = CreateObject("Excel.Application") ' New Microsoft.Office.Interop.Excel.Application
    Dim objWB As Object = objXL.Workbooks.Add
    Dim objWS As Object = objWB.Worksheets(1)

我已在IOMR_帐户的DCOM Config for Microsoft Excel Application中设置了权限,但尚未解决此问题。任何想法都会非常感激。

干杯

詹姆斯

3 个答案:

答案 0 :(得分:5)

在将我们的ASP.NET应用程序迁移到新硬件之后,我进一步研究了这个问题并提出了解决方案。

要解决此问题,请从“管理工具”中打开“组件服务”,然后按以下方式进行导航:

  • 组件服务 - >计算机 - >我的电脑 - > DCOM配置 - > Microsoft Excel应用程序
  • 右键单击Microsoft Excel Application - >属性 - >安全选项卡
  • 单击“自定义”以启用“启动和激活权限” - >编辑 - >添加
  • 输入“网络服务”,单击“检查名称”,然后单击确定
  • 允许“网络服务”的“本地启动”和“本地激活”,然后单击确定
  • 为“访问权限”选择自定义 - >编辑 - >添加
  • 输入“网络服务”,单击“检查名称”,然后单击确定
  • 为“NETWORK SERVICE”允许“本地访问”,然后单击“确定”
  • 点击确定

ASP.NET应用程序现在可以成功创建包含导出数据的Microsoft Excel工作表。

答案 1 :(得分:0)

您是否在服务器上注册了ActiveX?

http://support.microsoft.com/kb/146219

答案 2 :(得分:0)

SpreadsheetGear for .NET将允许您使用IWorkbook.SaveToStream将xls和xlsx工作簿直接保存到响应流。它是所有安全的托管C#代码,因此不需要以管理员身份运行任何东西,您将不会遇到Excel COM Interop带来的ASP.NET服务器上的问题。

您可以使用SpreadsheetGear here查看一些简单的ASP.NET Excel报告示例(C#和VB),如果您想自己试用,可以下载免费试用here

免责声明:我拥有SpreadsheetGear LLC