C# Excel工作表未关闭

C# Excel工作表未关闭,c#,.net,winforms,C#,.net,Winforms,可能重复: 我有一套功能。如果该函数通过,那么我将通过一个名为ExcelRecorder()的函数在一个名为WebServices_output.xlsx的excel工作表中打印一些消息 如果失败,那么我将通过ExcelRecorder()传递一些失败的消息 我把我的代码贴在下面 public void ExcelRecorder(int error, string detailmessage, string message, int row) {

可能重复:

我有一套功能。如果该函数通过,那么我将通过一个名为ExcelRecorder()的函数在一个名为WebServices_output.xlsx的excel工作表中打印一些消息 如果失败,那么我将通过ExcelRecorder()传递一些失败的消息

我把我的代码贴在下面

public void ExcelRecorder(int error, string detailmessage, string message, int row)
        {  
            Excel.Application xlApp = new Excel.Application();                
            Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"D:/WebServiceTestCases_Output.xlsx");
            Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
            Excel.Range xlRange = xlWorksheet.UsedRange;           
                if (!string.IsNullOrEmpty(message))
                {
                    ((Range)xlWorksheet.Cells[row, "M"]).Value2 = "FAIL";
                    ((Range)xlWorksheet.Cells[row, "N"]).Value2 = error;
                    ((Range)xlWorksheet.Cells[row, "O"]).Value2 = detailmessage;
                    ((Range)xlWorksheet.Cells[row, "P"]).Value2 = message;
                }
                else
                {
                    ((Range)xlWorksheet.Cells[row, "M"]).Value2 = "PASS";
                    ((Range)xlWorksheet.Cells[row, "N"]).Value2 = "";
                    ((Range)xlWorksheet.Cells[row, "O"]).Value2 = "";
                    ((Range)xlWorksheet.Cells[row, "P"]).Value2 = "";
                }
            xlWorkbook.Save();
            xlWorkbook.Close(0,0,0);
            xlApp.Quit();
        }
虽然我特别保存工作簿,关闭它然后退出,但当我打开任务管理器时,我看到Excel.EXE仍在运行。当我运行ExcelRecorder()五到六次时,我在任务管理器中看到五到六个Excel.EXE,程序崩溃

这里怎么了?尽管我添加了关闭工作簿的代码行,但为什么工作簿没有关闭?

您需要执行以下操作:

xlApp.Quit();
然后这个:

System.Runtime.Marshal.ReleaseComObject(xlApp);

这是复制品,等一下,我会帮你找到的。