【发布时间】:2023-04-04 08:44:01
【问题描述】:
我正在使用互操作库从一张 excel 文件中读取一些数据。我通过使用Microsoft.Office.Interop.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 用于不鼓励使用 2 个点的 com 对象。
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();
【问题讨论】:
-
@CJBS 他们也没有找到答案!但我会尝试在那里实施其中一项建议。谢谢!
-
@John Koerner,我会试试的,谢谢。