使用Excel Interop关闭Excel应用程序而不保存消息

Yon*_*Nir 5 c# com excel excel-interop

我正在使用Excel Interop COM对象.我正在编写一种方法,在其中打开和关闭Excel应用程序,然后打开Excel工作簿和工作表.在我完成它们之后,我正在关闭应用程序和工作簿.我的问题是这个方法可以重复调用几次,当工作表和应用程序关闭时,如果我想保存我所做的更改,我会从Excel应用程序中获取一条消息.该方法一直停滞,直到我按"否",但我无法告诉用户每次都按下它.

如何关闭应用程序而不接收此消息或至少通过代码回答它?

这些是我用来关闭应用程序和工作簿的方法:

private void FreeWorkSheetResources(Excel.Worksheet sheet)
{
  Marshal.ReleaseComObject(sheet);
  sheet = null;
}

private void FreeWorkBookResources()
{
  if (_excelSheets != null)
  {
    Marshal.ReleaseComObject(_excelSheets);
    _excelSheets = null;
  }
  _excelWorkBook.Close();
  Marshal.ReleaseComObject(_excelWorkBook);
  _excelWorkBook = null;
}

private void FreeApplicationResources()
{
  _app.Quit();
  Marshal.ReleaseComObject(_app);
  _app = null;
  GC.Collect();
}
Run Code Online (Sandbox Code Playgroud)

这就是我使用它们的方式:

if (_app == null)
  {
    _app = new Excel.Application();
  }
  if (_excelWorkBook == null)
  {
    _excelWorkBook = GetWorkBook(_filePath);
  }
  ....
  ....
  FreeWorkBookResources();
  FreeApplicationResources();
Run Code Online (Sandbox Code Playgroud)

Sud*_*udi 9

关闭Excel工作簿时,您可以使用以下语句:

object misValue = System.Reflection.Missing.Value;
xlWorkBook.Close(false, misValue, misValue);
Run Code Online (Sandbox Code Playgroud)


Cog*_*ent 5

我的问题是类似的。我需要生成 Excel 工作表,然后将其转换为 PDF。我的问题是 Excel 应用程序正在显示并通知我在退出之前保存。解决方案是设置.Visible = flase.DisplayAlerts = False

感谢@adil