none
Office Interop Excel entsorgen. RRS feed

  • Allgemeine Diskussion

  • Hallo zusammen,
    trotz umfangreicher "googlei", habe ich leider keine Antwort auf meine Frage gefunden. Ich exportiere Messdaten von meinem C# Programm per Office Interop nach Excel 2010. Das funktioniert auch wunderbar. Allerdings laufen manche Instanzen von Excel (im Taskmanager) noch weiter, nahchdem der Benutzer das Excel Fenster geschlossen hat.

    Ich habe leider keine Möglichkeit gefunden mich benachrichtigen (z.B. per Event) zu lassen, wenn der Benutzer Excel beendet. Ich bin für jeden Hinweis/Tip/Idee dankbar.

    Dankeschön! :-)


    Viele Grüße Holger M. Rößler

    • Typ geändert Ciprian Bogdan Mittwoch, 2. April 2014 16:00 keine Rückmeldung
    Montag, 9. September 2013 06:27

Alle Antworten

  • Hallo Holger,

    kann sein, dass ich dich das schon mal gefragt habe: Warum Interop? Oftmals nimmt man das ja nur, weil man gar nicht weiß, dass es Alternativen gäbe.

    Für den reinen Export von Daten kann man auch problemlos OleDb in Verbindung mit der JET oder ACE Endinge nehmen. Damit hat man dann keinerlei Abhängigkeit von der (ggfs. ja auch gar nicht vorhandenen) Excelinstallation.

    Falls Interop wichtig für deine Anforderungen ist, schau für die Ereignisbehandlung mal hier:

      http://blogs.msdn.com/b/gabhan_berry/archive/2008/02/13/c-excel-addin-steps-2-and-3-understanding-the-ribbon-and-event-trapping.aspx

    Ob da allerdings ein Ereignis dabei ist, dass dir zuverlässig sagt, dass die Excelinstanz an sich beendet wurde, weiß ich so nicht.

    Schau evtl. auch mal hier, da findest Du weitere Infos über "Zombieprozesse", wenn man per Interop arbeitet.

      http://weblogs.asp.net/joshrobinson/archive/2004/03/29/101445.aspx


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Montag, 9. September 2013 07:21
    Moderator
  • Hallo Stefan,
    erstmal vielen Dank für deine Antwort.

    Es läuft ja mehr als nur der reine Datenimport. Sonst hätte ich es wahrscheinlich per CSV gemacht ;-)
    So dürfen z.B. nicht alle Zellen zu bearbeiten sein, manche benötigen Werteabhängig eine bestimmte Hintergrundfarbe oder Schriftfarbe etc.

    Leider haben mir deine Links nicht wirklich weitergeholfen. Ich hatte ja bereits massig Hilfe dazu gefunden WIE ich die Objekte entsorge. Mein Problem ist aber dass ich nicht weiss WANN ich diese entsorgen muss. Es muss doch da einen Event, eine Message oder was auch immer dafür geben, wenn der Benutzer eine von mir geöffnete Excel-Instanz schliesst!?


    Viele Grüße Holger M. Rößler

    Montag, 9. September 2013 07:42
  • Ich mache in einem meiner Programme genau dasselbe. Ich gebe Excel mit ReleaseComObject frei und setze dann alle Variablen auf Nothing. Danach ist die Anwendung eigentlich nicht mehr für den Excel-Prozess verantwortlich und er sollte sich selbständig beenden, wenn der Nutzer Excel schließt.

    Könnte es sein, dass du übersehen hast ReleaseComObject aufzurufen?

    Für das Beenden finde ich ebenfalls kein Event. Auf Anhieb finde ich für das Outlook-Objekt nur ein Event, wenn das WorkSheet geschlossen wird. Das könntest du evtl registrieren, falls du immernoch diesen Weg gehen willst.

    Dienstag, 10. September 2013 12:56
  • Hallo Quidnunc1987,
    vielen Dank für deine Antwort. :-)

    Heisst das etwa, ihr ruft Excel auf und entsorgt die COM-Objekte während der Benutzer noch damit arbeitet? Und das funktioniert? Dann wäre das auch meine Lösung!


    Viele Grüße Holger M. Rößler

    Dienstag, 10. September 2013 13:07
  • Ja, genau so mache ich es. bei mir macht das keine Probleme.
    Dienstag, 8. Oktober 2013 09:46
  • *****************************************************************************************************

    Dieser Thread wurde mangels weiterer Beteiligung ohne bestätigte Lösung abgeschlossen.

    Neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.

    *****************************************************************************************************


    Ciprian Bogdan, MICROSOFT   Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-PrinzipEntwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.





    Mittwoch, 2. April 2014 16:00