我正在使用interop库从excel文件的工作表中读取一些数据。我通过使用Microsoft.Office.Interop.Excel
获得数据,然后读取表单中的所有数据。Excel进程仍在后台运行
Application ExcelApp = new Excel.Application();
Workbook excelWorkbook = ExcelApp2.Workbooks.Open(excelFileNamePath);
_Worksheet excelWorksheet = excelWorkbook.Sheets[excelSheetName];
Range excelRange = excelWorksheet.UsedRange;
//...for loops for reading data
ExcelApp.Quit();
但经过我的应用程序终止,我想修改我的excel文件,不得不同时开放了一些问题。显然,即使我打电话给ExcelApp.Quit()
,excel进程仍会继续在后台运行。有没有办法正确关闭应用程序使用的excel文件?我是c#的新手,所以我可能在这里错过了一些东西。
编辑:解决!显然有一个rule COM对象,不鼓励使用2点。
Excel.Application ExcelApp2 = new Excel.Application();
Excel.Workbooks excelWorkbooks = ExcelApp2.Workbooks;
Excel.Workbook excelWorkbook = excelWorkbooks.Open(excelFileName);
Excel._Worksheet excelWorksheet = excelWorkbook.Sheets[excelSheetName];
//...
excelWorkbook.Close();
Marshal.ReleaseComObject(excelWorkbook);
Marshal.ReleaseComObject(excelWorksheet);
Marshal.ReleaseComObject(excelRange);
ExcelApp2.Quit();
在看一看:http://stackoverflow.com/questions/9962157/safely-disposing-excel-interop-objects -in-c – CJBS
你有没有试过这个:http://support.microsoft。com/kb/Q317109 –
@CJBS他们也没有找到答案!但我会尝试实施其中的一个建议。谢谢! – rrh