在C#中关闭Excel窗口后关闭Excel应用程序进程

时间:2014-03-04 13:09:21

标签: c# excel process export-to-excel excel-interop

对于报告,我创建了一个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应用程序。

编辑:我需要“退出事件”之类的内容。要定义用户关闭窗口,请退出应用程序。

2 个答案:

答案 0 :(得分:0)

您可能正在使用未正确发布的COM对象

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

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

答案 1 :(得分:0)

对不起,我误解了这个问题......

<强>旧: 检查窗口是否存在

[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()