我有一个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中设置了权限,但尚未解决此问题。任何想法都会非常感激。
干杯
詹姆斯
答案 0 :(得分:5)
在将我们的ASP.NET应用程序迁移到新硬件之后,我进一步研究了这个问题并提出了解决方案。
要解决此问题,请从“管理工具”中打开“组件服务”,然后按以下方式进行导航:
ASP.NET应用程序现在可以成功创建包含导出数据的Microsoft Excel工作表。
答案 1 :(得分:0)
您是否在服务器上注册了ActiveX?
答案 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