Avatar ·

如何正确释放 Excel Interop COM 对象的资源?

大家好!我正在用 C# 编写一个小应用程序,通过 Microsoft.Office.Interop.Excel 操作 Excel。遇到一个问题:执行代码后,Excel.exe 进程仍然留在任务管理器中,即使我显式调用了 Quit() 和 Marshal.ReleaseComObject(),它也不会终止。

以下是我的代码示例:

using Excel = Microsoft.Office.Interop.Excel;

public void ExportToExcel()
{
    var excelApp = new Excel.Application();
    excelApp.Visible = false;
    var workbook = excelApp.Workbooks.Add();
    var worksheet = workbook.Worksheets[1] as Excel.Worksheet;

    worksheet.Cells[1, 1] = "Hello";
    worksheet.Cells[1, 2] = "World";

    workbook.SaveAs(@"C:\test.xlsx");
    workbook.Close();
    excelApp.Quit();

    Marshal.ReleaseComObject(worksheet);
    Marshal.ReleaseComObject(workbook);
    Marshal.ReleaseComObject(excelApp);
}

运行这个方法后,Excel 进程仍然挂在那里。我尝试了不同的方法: