7

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

例外:无法创建 ActiveX 组件。

使用以下堆栈跟踪

System.Exception:无法创建 ActiveX 组件。在 Microsoft.VisualBasic.Interaction.CreateObject(String ProgId, String ServerName) 在 HR.ManagerSummary.ExportToExcel() 在 H:\Development\pagec\Visual Studio 2005\Projects\HR\ysnet2\Time\ManagerSummary.aspx.vb:line 935 在 HR.ManagerSummary.btnExcel_Click(Object sender, EventArgs e) in H:\Development\pagec\Visual Studio 2005\Projects\HR\ysnet2\Time\ManagerSummary.aspx.vb: System.Web.UI.WebControls 的第 891 行.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 System.Web.UI.Page 处的 .Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)。

代码在 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 应用程序设置了权限,但这并没有解决问题。任何想法将不胜感激。

干杯

詹姆士

4

3 回答 3

7

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

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

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

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

于 2012-03-15T14:51:48.593 回答
0

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

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

于 2009-12-04T15:14:57.830 回答
0

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

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

免责声明:我拥有 SpreadsheetGear LLC

于 2009-12-07T15:03:03.843 回答