我有一套功能。如果该函数通过,那么我通过名为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,我的程序崩溃了。
这里有什么问题?为什么工作簿没有关闭,虽然我已经添加了代码行来关闭它?
答案 0 :(得分:2)
你需要这样做:
xlApp.Quit();
然后这个:
System.Runtime.Marshal.ReleaseComObject(xlApp);