Avatar ·

How to properly release resources of COM objects Excel Interop in C#?

Hello everyone! I'm writing a small application in C# to work with Excel via Microsoft.Office.Interop.Excel. I encountered a problem: after executing the code, the Excel.exe process remains in the Task Manager and does not terminate, even when I explicitly call Quit() and Marshal.ReleaseComObject().

\n\n

Here is an example of my code:

\n\n
using Excel = Microsoft.Office.Interop.Excel;\n\npublic void ExportToExcel()\n{\n    var excelApp = new Excel.Application();\n    excelApp.Visible = false;\n    var workbook = excelApp.Workbooks.Add();\n    var worksheet = workbook.Worksheets[1] as Excel.Worksheet;\n\n    worksheet.Cells[1, 1] = "Hello";\n    worksheet.Cells[1, 2] = "World";\n\n    workbook.SaveAs(@"C:\\test.xlsx");\n    workbook.Close();\n    excelApp.Quit();\n\n    Marshal.ReleaseComObject(workshee