Występuje problem z kodem, który debuguję. Excel interop służy do wyodrębniania niektórych wartości ze skoroszytu; jednak program Excel pozostaje otwarty po zakończeniu programu. Próbowałem tradycyjne rozwiązanie, ale wciąż zachowuje odwołanie do programu Excel otwarty na wszystkich komputerach, na których kod jest uruchamianyProces Excel pozostaje otwarty po współdziałaniu; tradycyjna metoda nie działa
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);
}
Nawet ten prosty kawałek kodu utrzymuje proces uruchomiony z wielu plików (xlsm, XLSX, xls). W tej chwili mamy obejście problemu, aby zabić procesy Excela, które otworzyliśmy, ale wolałbym, żeby to działało dla mojego własnego zdrowia psychicznego.
Powinienem dodać, że zawęziłem to do zmiennej Workbook
. Jeśli usuniemy połączenie pod numer books.Open()
i wszystkie odniesienia do book
, to zostanie ono pomyślnie zamknięte.
Twój kod zadziałał, gdy go przetestowałem, czy otrzymujesz wyjątek w czasie wykonywania, powodujący problem? – msmucker0527