关于c#:Excel表没有关闭

Excel sheet not closing

本问题已经有最佳答案,请猛点这里访问。

0

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

在下面发布我的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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,程序崩溃。

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


你需要这样做:

1
xlApp.Quit();

然后:

1
System.Runtime.Marshal.ReleaseComObject(xlApp);