我正在创建一个处理Excel应用程序的C#应用程序。
我正在加载的excel文件是预加载的(由于文件的周长需要一段时间加载它),然后在用户请求时显示。
但是,当用户关闭Windows时,Windows会将会话查询结束的消息发送到隐藏的Excel应用程序,强制显示“您是否要将更改保存到'(EXCEL FILE)'?”。
如何覆盖此行为并优雅地终止excel文件?
我已经研究过通过VBA抑制保存提示,但是Session Ended消息不会执行此代码。
此外,我已经考虑通过处理我自己的C#app的Session Query End消息来杀死这个过程,但这是不可靠的,因为它是一个竞赛(什么应用程序首先得到消息,我的C#或我隐藏的excel文件)< / p>
修改 通过优雅地杀死,我的意思是在不提示用户的情况下关闭该过程。当用户选择退出我的程序时,我知道如何执行此操作,我只是不知道何时调用此例程。
EDIT2:
我使用Microsoft.Office.Interop.Excel
答案 0 :(得分:1)
如果没有显示您的代码,很难说出您的代码,但是,这里是我的代码片段,它在类似情况下工作(我认为)没有提示:
Excel.Application xl = new Excel.Application();
xl.Visible = false;
xl.DisplayAlerts = false;
//do something
xl.Quit();
Marshal.ReleaseComObject(xl);
xl = null;
GC.Collect();