EXCEL application.quit 不关闭进程问题解决
直接上源码
public bool Format(string filePath, string outputFile){
var excelApplication = new Microsoft.Office.Interop.Excel.Application();Workbook workbook = null;XlFixedFormatType targetType = XlFixedFormatType.xlTypePDF; //PDF格式try{
workbook = excelApplication.Workbooks.Open(filePath);if (!File.Exists(outputFile)) //存在PDF,不需要继续转换{
workbook.ExportAsFixedFormat(targetType, outputFile);}}catch (Exception e){
Console.WriteLine(e);return false;}finally{
NAR(targetType);workbook?.Close();NAR(workbook);excelApplication.Quit();NAR(excelApplication);GC.Collect();}return true;/// <summary>/// 释放资源/// </summary>/// <param name="o"></param>private void NAR(object o){
try{
Console.WriteLine(o);Console.WriteLine(System.Runtime.InteropServices.Marshal.FinalReleaseComObject(o));}catch {
}finally{
o = null;}}
这个版本看起来没问题,但是我实际测试,无论怎么搞,excel进程依然存在。
最终解决方案
var workbooks = excelApplication.Workbooks;workbook = workbooks.Open(filePath);NAR(targetType);workbook?.Close();NAR(workbook);workbooks?.Close();NAR(workbooks);excelApplication.Quit();NAR(excelApplication);GC.Collect();