У меня проблема с кодом, который я отлаживаю. Взаимодействие 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
, он будет успешно завершен.