【问题标题】:ASP.NET Cannot create ActiveX componentASP.NET 无法创建 ActiveX 组件
【发布时间】:2009-12-04 14:54:13
【问题描述】:

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

异常:无法创建 ActiveX 组件。

使用以下堆栈跟踪

System.Exception:无法创建 ActiveX 组件。 在 Microsoft.VisualBasic.Interaction.CreateObject(字符串 ProgId,字符串 ServerName) 在 H:\Development\pagec\Visual Studio 2005\Projects\HR\ysnet2\Time\ManagerSummary.aspx.vb:line 935 中的 HR.ManagerSummary.ExportToExcel() 在 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(字符串 eventArgument) 在 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(字符串 eventArgument) 在 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,字符串 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)

我在 DCOM Config 中为 IUSR_ 帐户的 Microsoft Excel 应用程序设置了权限,但这并没有解决问题。任何想法将不胜感激。

干杯

詹姆斯

【问题讨论】:

    标签: asp.net excel activexobject


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

        免责声明:我拥有 SpreadsheetGear LLC

        【讨论】:

          猜你喜欢
          • 2010-12-25
          • 1970-01-01
          • 2018-01-22
          • 2011-07-31
          • 1970-01-01
          • 1970-01-01
          • 2023-03-05
          相关资源
          最近更新 更多