2014-03-04 136 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 –