使用Excel InteropclosuresExcel应用程序而不保存消息
我正在使用Excel Interop COM对象。 我正在写一个方法,我打开和closures一个Excel应用程序,然后打开一个Excel工作簿和工作表。 在完成他们的工作后,我正在closures应用程序和工作簿。 我的问题是,这个方法可以重复调用几次,当表和应用程序正在closures时,我从Excel应用程序获取消息,如果我想保存我所做的更改。 该方法卡住,直到我按“否”,但我不能告诉用户每次按下它。
如何closures应用程序而不收到此消息或至less通过代码回答?
这些是我用来closures应用程序和工作簿的方法:
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(); }
这就是我使用它们的方式:
if (_app == null) { _app = new Excel.Application(); } if (_excelWorkBook == null) { _excelWorkBook = GetWorkBook(_filePath); } .... .... FreeWorkBookResources(); FreeApplicationResources();
closuresExcel WorkBook时,您可以使用以下语句:
object misValue = System.Reflection.Missing.Value; xlWorkBook.Close(false, misValue, misValue);
在closures工作簿时执行此操作。
_excelWorkBook.Close(true);
尝试这个:
excelApp.DisplayAlerts = False; //save and close your workbook excelApp.DisplayAlerts = True;
我的问题是类似的。 我需要生成Excel工作表,然后将其转换为PDF。 我的问题是Excel应用程序正在显示并通知我在退出之前保存。 解决scheme是设置.Visible = flase
和.DisplayAlerts = False
感谢@adil