2014-03-04 195 views
-1

對於報告,我創建了一個Excel應用程序,將一些數據導出到它並使其可見。Excel窗口在C關閉後關閉Excel應用程序過程

public void MyMethod() 
{ 
    Excel.Application excelApp = new Excel.Application(); 
    object misValue = System.Reflection.Missing.Value; 
    Excel.Workbook workBook = excelApp.Workbooks.Add(misValue); 
    Excel.Worksheet workSheet = (Excel.Worksheet)workBook.Worksheets.get_Item(1); 
    Excel.Range range; 

    //my export code here.. 



    //at last excel application is shown for user 
    excelApp.Visible = true; 
} 

當用戶點擊「關閉」按鈕時,會出現一個對話框,其中包含[「保存」,「不保存」和「取消」]。在任何情況下(保存或不保存),窗口都會關閉,但EXCEL.EXE過程在此問題中與圖片相同:Like this picture,因爲我尚未關閉它。

如何定義用戶是否關閉了所查看的excel窗口?如果是,那麼我會退出我創建的excel應用程序。

編輯:我需要類似「退出事件」。要定義用戶是否關閉窗口,請退出應用程序。

+0

爲什麼你不能使用'excellApp.Quit()'? – davidsbro

+0

我什麼時候可以使用它?如果我將使用它,文件將關閉。我想在用戶關閉文件後調用它。 –

回答

0

您可能使用的是不被釋放正確

Worksheets sheets = excelApp.Worksheets; 
Worksheet sheet = sheets.Open(...); 

Marshal.ReleaseComObject(sheets); 
Marshal.ReleaseComObject(sheet); 
+0

這不起作用 –

+0

確保你正在釋放你正在創建的所有COM對象。還要確保你將它們全部分配給變量,以便釋放它們。 – Tsukasa

0

對不起COM對象,我誤解了這個問題....

老: 檢查是否存在窗口

[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)] 
... 
while(true) 
{ 
    IntPtr hWnd = (IntPtr)FindWindow(windowName, null); 
    public static extern bool IsWindow(IntPtr hWnd); 
} 
App.Close() 
+0

是excel的windowName「Book1」嗎? (默認窗口標題)或EXCEL –