我遇到了一些我正在調試的代碼問題。 Excel interop用於從工作簿中提取一些值;但是,Excel在程序退出後仍然保持打開狀態。我已經嘗試了傳統的解決方案,但它仍保持在所有機器上打開一個參考到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);
}
即使這個簡單的代碼保持與多個文件在運行過程中(XLSM,XLSX, XLS)。現在我們有一個解決方法來殺死我們已經打開的Excel進程,但我更願意爲了我自己的理智而努力工作。
我應該補充一點,我已經縮小到Workbook
變量。如果我刪除對books.Open()
的呼叫以及對book
的所有引用,則它將成功關閉。
當我測試它時,你的代碼工作,你可能會在運行時得到異常導致該問題? – msmucker0527