2009-12-04 6 views
5

J'ai une application ASP.NET qui permet aux utilisateurs d'exporter les absences de leur personnel chaque mois vers Microsoft Excel. L'application génère actuellement l'exception suivanteASP.NET Impossible de créer le composant ActiveX

Exception: impossible de créer un composant ActiveX.

avec la trace de pile suivant

System.Exception: ne peut pas créer le composant ActiveX. à Microsoft.VisualBasic.Interaction.CreateObject (String ProgId, String ServerName) à HR.ManagerSummary.ExportToExcel() dans H: \ Développement \ pagec \ Visual Studio 2005 \ Projects \ HR \ ysnet2 \ Time \ ManagerSummary.aspx.vb : ligne 935 à HR.ManagerSummary.btnExcel_Click (Expéditeur d'objet, EventArgs e) dans H: \ Développement \ pagec \ Visual Studio 2005 \ Projets \ HR \ ysnet2 \ Time \ ManagerSummary.aspx.vb: ligne 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)

Le code ne parvient pas à la ligne de 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) 

J'ai mis l'autorisation dans Configuration DCOM pour Microsoft Excel application pour le compte IUSR_ mais cela n'a pas résolu le problème. Toute idée serait grandement appréciée.

Vive

James

Répondre

5

Après la migration de nos applications ASP.NET à un nouveau matériel, j'étudié cette question et a trouvé une solution.

Pour résoudre le problème, ouvrez "Services de composants" Outils d'administration et de naviguer comme suit:

  • Component Services -> Informatique -> Poste de travail -> DCOM Config -> Microsoft Excel application
  • droit cliquez sur Microsoft Excel application -> Propriétés -> onglet sécurité
  • Cliquez sur Personnaliser pour "Lancement et activation des autorisations" -> Modifier -> Ajouter
  • Entrez "NETWORK SERVICE", cliquez sur "Vérifier les noms", cliquez sur OK
  • Allow "Lancement local" et "Activation locale" pour "SERVICE RESEAU" puis cliquez sur OK
  • Sélectionnez Personnaliser pour "Autorisations d'accès" -> Modifier -> Ajouter
  • Entrez "NETWORK SERVICE", cliquez sur "Vérifier les noms" , cliquez sur OK
  • Autoriser "accès local" pour pour "SERVICE RESEAU" puis cliquez sur OK
  • cliquez sur OK

L'application ASP.NET peut désormais créer avec succès une feuille de calcul Microsoft Excel contenant les données exportées.

0

vous permettra de sauvegarder xls et xlsx classeurs directement à un flux de réponse avec IWorkbook.SaveToStream. Il s'agit d'un code C# géré en toute sécurité, il n'est donc pas nécessaire d'exécuter quoi que ce soit en tant qu'administrateur et vous ne rencontrerez pas les problèmes qu'OCO Excel Interop apporte sur un serveur ASP.NET.

Vous pouvez voir quelques exemples simples d'ASP.NET Excel Reporting (C# et VB) en utilisant SpreadsheetGear here et télécharger l'essai gratuit here si vous voulez l'essayer vous-même.

Disclaimer: Je possède SpreadsheetGear LLC