关于C#中操作EXCEL后,关闭对象但EXCEL进程仍然存在的解决办法.
自己之前一直被这个问题困扰,也在网上找了很多资料,大部分都是用杀死进程的方法来解决,个人觉得这个太影响代码美观了.今天偶然发现了解决办法.给大家共享一下.
现象 :我在C#中,需要从EXCEL导入或者导出数据,当导入导出结束后,使用excelApp.Quit()关闭EXCEL对象,但系统进程中仍然存在EXCEL进程.并没有关闭.
原因:其实excelApp.Quit();方法是可以正确的释放EXCEL进程的,我们导入导出EXCEL时,普遍方法是代码后台处理,前台并隐藏EXCEL界面,也就是excelApp.Visible = false (这是默认值,不设置的话也是False),当调用 excelApp.Quit()时,EXCELE会弹出个对话框,问你是否保存,而excelApp.Visible = false 时,保存对话框也一并隐藏掉了,所以EXCEL卡在了这个地方,造成了EXCEL不能正常释放进程.
解决方法:设置excelApp.DisplayAlerts = false,就是不提问任何提示,这样再关闭EXCEL对象时,就不会有保存提示,也就不会卡住了.