我遇到了一些我正在调试的代码问题.Excel interop用于从工作簿中提取某些值; 但是,Excel程序退出后仍保持打开状态.我已经尝试了传统的解决方案,但它仍然在运行代码的所有机器上保持对Excel的引用
private void TestExcel()
{
Excel.Application excel = new Excel.Application();
Excel.Workbooks books = excel.Workbooks;
Excel.Workbook book = books.Open("C:\\test.xlsm");
book.Close();
books.Close();
excel.Quit();
Marshal.ReleaseComObject(book);
Marshal.ReleaseComObject(books);
Marshal.ReleaseComObject(excel);
}
Run Code Online (Sandbox Code Playgroud)
即使是这段简单的代码也可以使进程运行多个文件(xlsm,xlsx,xls).现在我们有一个解决方法来杀死我们已经打开的Excel进程,但我更倾向于让这个工作为我自己的理智.
我应该补充一点,我已将其缩小到Workbook变量.如果我删除了对books.Open()所有引用的调用,book那么它将成功关闭.