Tôi đang gặp sự cố với một số mã tôi đang gỡ lỗi. Excel interop được sử dụng để trích xuất một số giá trị từ một bảng tính; tuy nhiên, Excel vẫn mở sau khi chương trình đã thoát. Tôi đã thử các giải pháp truyền thống, nhưng nó vẫn giữ một tham chiếu đến Excel mở trên tất cả các máy nơi mã được chạyQuá trình Excel vẫn mở sau khi interop; phương pháp truyền thống không hoạt động
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);
}
Ngay cả mảnh này mã đơn giản giữ cho quá trình chạy với nhiều file (xlsm, xlsx, xls). Ngay bây giờ chúng ta có một giải pháp thay thế để giết các quy trình Excel mà chúng ta đã mở ra, nhưng tôi muốn làm việc này cho sự tỉnh táo của chính mình hơn.
Tôi nên thêm rằng tôi đã thu hẹp nó xuống biến số Workbook
. Nếu tôi xóa cuộc gọi đến books.Open()
và tất cả các tham chiếu đến book
thì nó sẽ đóng thành công.
Mã của bạn đã hoạt động khi tôi thử nghiệm, bạn có thể nhận được ngoại lệ vào thời gian chạy gây ra sự cố không? – msmucker0527