Frage

Ich habe eine ASP.NET-Anwendung, die Benutzer ihre Mitarbeiter Abwesenheiten jeden Monat nach Microsoft Excel exportieren. Die Anwendung wird zur Zeit die folgenden Ausnahme zu erzeugen

. Ausnahme: Kann nicht erstellen ActiveX-Komponente

mit dem folgenden Stack-Trace

System.Exception: Kann nicht ActiveX-Komponente erstellen. bei Microsoft.VisualBasic.Interaction.CreateObject (String ProgId, String Servername) bei HR.ManagerSummary.ExportToExcel () in H: \ Entwicklung \ pagec \ Visual Studio 2005 \ Projects \ HR \ ysnet2 \ Zeit \ ManagerSummary.aspx.vb: line 935 bei HR.ManagerSummary.btnExcel_Click (Object sender, EventArgs e) in H: \ Entwicklung \ pagec \ Visual Studio 2005 \ Projects \ HR \ ysnet2 \ Zeit \ ManagerSummary.aspx.vb: line 891 bei System.Web.UI.WebControls.Button.OnClick (EventArgse) bei System.Web.UI.WebControls.Button.RaisePostBackEvent (String eventargument) bei System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent (String eventargument) bei System.Web.UI.Page.RaisePostBackEvent (IPostBackEventHandler Sourcecontrol, String eventargument) bei System.Web.UI.Page.RaisePostBackEvent (Namevaluecollection postdata) bei System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Der Code scheitert an der Create Linie.

    '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)

Ich habe gesetzt Erlaubnis in DCOM-Konfiguration für Microsoft Excel-Anwendung für das IUSR_ Konto aber, dass das Problem nicht behoben hat. Irgendwelche Ideen würden sehr geschätzt werden.

Prost

James

War es hilfreich?

Lösung

Nach der Migration unserer ASP.NET-Anwendungen auf neue Hardware, untersuchte ich dieses Problem weiter und kam mit einer Lösung auf.

, um das Problem zu beheben, öffnen Sie „Component Services“ von Verwaltung und navigieren Sie wie folgt vor:

  • Komponentendienste -> Computer -> Arbeitsplatz -> DCOM-Konfiguration -> Microsoft Excel Application
  • Rechtsklick auf Microsoft Excel-Anwendung -> Eigenschaften -> Sicherheit
  • Klicken Sie auf Anpassen für "Start- und Aktivierungsberechtigungen" -> Bearbeiten -> Hinzufügen
  • Geben Sie "NETWORK SERVICE", klicken Sie auf "Namen überprüfen", klicken Sie auf OK
  • Zulassen "Local Launch" und "Lokale Aktivierung" für "NETWORK SERVICE", dann klicken Sie auf OK
  • Wählen Sie Anpassen für "Zugriffsberechtigungen" -> Bearbeiten -> Hinzufügen
  • Geben Sie "NETWORK SERVICE", klicken Sie auf "Namen überprüfen", klicken Sie auf OK
  • Zulassen "Local Access" für für "NETWORK SERVICE", dann klicken Sie auf OK
  • Klicken Sie auf OK

Die ASP.NET-Anwendung kann jetzt erfolgreich eine Microsoft Excel-Arbeitsblatt mit den exportierten Daten erstellen.

Andere Tipps

Haben Sie das ActiveX auf dem Server registriert?

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

SpreadsheetGear für .NET xls speichern lassen und xlsx Arbeitsblätter direkt zu einem Antwortstrom mit IWorkbook. SaveToStream. Es ist alles sicher C # -Code verwaltet, so gibt es keine Notwendigkeit, etwas als Administrator ausgeführt werden soll, und Sie werden nicht in die Probleme, dass Excel COM Interop bringen auf einem ASP.NET-Server ausgeführt werden.

Sie können einige einfache ASP.NET-Excel Reporting-Proben sehen (C # und VB) mit SpreadsheetGear hier und die kostenlose Testversion herunterladen hier , wenn Sie es versuchen wollen selbst.

Disclaimer: Ich besitze SpreadsheetGear LLC

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top