Frage

Ich bin mit Excel aus einer C # .NET-Anwendung und Probleme, den Prozess immer heruntergefahren werden. Wie kann ich die Excel-Prozess bekommen richtig aus meinem C # Programm herunterfahren?

War es hilfreich?

Lösung

Versuchen Sie diese:

foreach (System.Diagnostics.Process process in System.Diagnostics.Process.GetProcessesByName("EXCEL"))
        {
            if (process.MainModule.ModuleName.ToUpper().Equals("EXCEL.EXE"))
            {
                process.Kill();
                break;
            }
        }

Andere Tipps

Ich bin zu 99% sicher, dass Ihr Problem durch baumeln COM-Verweis verhindert, dass der Excel-Prozess heruntergefahren verursacht wird. Excel ist besonders anfällig für diese, da sie dazu neigt, transparent COM-Verweise zu erzeugen, ohne dass Sie die Mittel geben an ihren Griffen zu erhalten und sie explizit geschlossen.

Die PIAs dieses Problem noch durch ihre eigene Reihe von Verweisen auf die zugrunde liegenden COM-Objekte zu machen, dass sie aufzuräumen nicht wenn Sie sie ausdrücklich machen es tun. Arbeiten mit Excel durch die PIA ist ziemlich knifflig genau aus diesem Grunde.

Application.Quit() (IIRC ist es das, was es heißt) wird Herunterfahren des Prozesses, wenn die Referenzen sind alle richtig gereinigt. Dies bedeutet, dass Sie müssen sorgfältig den Lebenszyklus von irgendetwas verwalten, die COM-Verweise auf die Excel-Prozess hält und stellen Sie sicher, dass alle COM-Verweise ordnungsgemäß gereinigt.

Application app = new Application();
...
EndTask((IntPtr)app.Hwnd, true, true);

[DllImport("user32.dll")]
public static extern bool EndTask(IntPtr hwnd, bool shutdown, bool force);

Je nach Bedarf, können Sie SpreadsheetGear für .NET mit überlegen, welche Sie eine Excel-kompatible Komponente gibt ohne COM-Interop (keine hängenden Instanzen, eine bessere Leistung zu erzielen, müssen sich keine Sorgen machen, ob Excel installiert ist oder welche Version von Excel installiert ist).

Sie können live ASP.NET Proben mit C # und VB Quelle finden Sie unter hier , lernen mehr über SpreadsheetGear Windows Forms Kontrollen und Proben hier und eine kostenlose Testversion herunterladen < a href = "https://www.spreadsheetgear.com/downloads/register.aspx" rel = "nofollow noreferrer"> hier wenn Sie es selbst versuchen.

Disclaimer: Ich besitze SpreadsheetGear LLC

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