我有一个 ASP.NET 应用程序,允许用户将员工每月的缺勤情况导出到 Microsoft Excel。应用程序当前生成以下异常
异常:无法创建 ActiveX 组件。
具有以下堆栈跟踪
System.Exception: 无法创建 ActiveX 组件。 在 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(字符串 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( bool includeStagesBeforeAsyncPoint, bool 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)
我已在 Microsoft Excel 应用程序的 DCOM 配置中为 IUSR_ 帐户设置了权限,但这并没有解决问题。任何想法将不胜感激。
干杯
詹姆斯
最佳答案
将 ASP.NET 应用程序迁移到新硬件后,我进一步研究了这个问题并提出了解决方案。
要解决此问题,请从管理工具中打开“组件服务”并按如下方式导航:
- 组件服务 -> 计算机 -> 我的电脑 -> DCOM 配置 -> Microsoft Excel 应用程序
- 右键单击 Microsoft Excel 应用程序 -> 属性 -> 安全选项卡
- 点击“启动和激活权限”的自定义 -> 编辑 -> 添加
- 输入“NETWORK SERVICE”,点击“检查名称”,然后点击“确定”
- 允许“网络服务”的“本地启动”和“本地激活”,然后点击“确定”
- 选择“访问权限”自定义 -> 编辑 -> 添加
- 输入“NETWORK SERVICE”,点击“检查名称”,然后点击“确定”
- 允许“网络服务”的“本地访问”,然后点击“确定”
- 点击“确定”
ASP.NET 应用程序现在可以成功创建包含导出数据的 Microsoft Excel 工作表。
关于ASP.NET 无法创建 ActiveX 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1847444/