2009-12-04 36 views
5

Possiedo un'applicazione ASP.NET che consente agli utenti di esportare le assenze del proprio personale ogni mese in Microsoft Excel. L'applicazione sta generando la seguente eccezioneASP.NET Impossibile creare il componente ActiveX

Eccezione: impossibile creare il componente ActiveX.

con la seguente analisi dello stack

System.Exception: Impossibile creare il componente ActiveX. in Microsoft.VisualBasic.Interaction.CreateObject (String ProgId, String ServerName) in HR.ManagerSummary.ExportToExcel() in H: \ Sviluppo \ pagec \ Visual Studio 2005 \ Progetti \ HR \ ysnet2 \ Time \ ManagerSummary.aspx.vb : riga 935 in HR.ManagerSummary.btnExcel_Click (Oggetto mittente, EventArgs e) in H: \ Sviluppo \ pagec \ Visual Studio 2005 \ Progetti \ HR \ ysnet2 \ Time \ ManagerSummary.aspx.vb: riga 891 su System.Web .UI.WebControls.Button.OnClick (EventArgs e) su System.Web.UI.WebControls.Button.RaisePostBackEvent (String eventArgument) su System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent (String eventArgument) su System.Web.UI.Page.RaisePostBackEvent (IPostBackEventHandler sourceControl, String eventArgument) su System.Web. UI.Page.RaisePostBackEvent (NameValueCollection postData) a System.Web.UI.Page.ProcessRequestMain (booleano includeStagesBeforeAsyncPoint, booleano includeStagesAfterAsyncPoint)

Il codice non riesce alla linea 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) 

Ho impostato il permesso in Config DCOM per Microsoft Excel Applicazione per l'account IUSR_ ma questo non ha risolto il problema. Qualsiasi idea sarebbe molto apprezzata.

Acclamazioni

James

risposta

5

Dopo la migrazione delle nostre applicazioni ASP.NET su un nuovo hardware, ho indagato ulteriormente la questione e si avvicinò con una soluzione.

Per risolvere il problema, aprire "Servizi componenti" da Strumenti di amministrazione e navigare come segue:

  • Servizi componenti -> Computer -> Risorse del computer -> Config DCOM -> Microsoft Excel Application
  • destro fare clic su Microsoft Excel Applicazione -> Proprietà -> scheda
  • Security
  • Fare clic su Personalizza per "Launch and Activation Permissions" -> Modifica -> Aggiungi
  • Enter "SERVIZIO dI RETE", fare clic su "Controlla nomi", fare clic su OK
  • Consenti "Avvio locale" e "Attivazione locale" per "SERVIZIO DI RETE", quindi fare clic su OK
  • Selezionare Personalizza per "Autorizzazioni di accesso" -> Modifica -> Aggiungi
  • Enter "SERVIZIO DI RETE", fai clic su "Controlla nomi" , fare clic su OK
  • Consenti "Accesso locale" per per "SERVIZIO dI RETE", quindi fare clic su OK
  • Fare clic su OK

L'applicazione ASP.NET può ora creare correttamente un foglio di lavoro di Microsoft Excel contenente i dati esportati.

0

vi permetterà di salvare XLS e XLSX fogli di lavoro direttamente ad un flusso di risposta con IWorkbook.SaveToStream. È un codice C# completamente sicuro, quindi non è necessario eseguire nulla come admin e non si verificheranno i problemi che l'interoperabilità COM di Excel porta su un server ASP.NET.

È possibile visualizzare alcuni semplici esempi di report Excel (C# e VB) di ASP.NET utilizzando SpreadsheetGear here e scaricare la versione di prova gratuita here se si desidera provare da soli.

Disclaimer: possiedo SpreadsheetGear LLC

Problemi correlati