디버깅 중 일부 코드에 문제가 있습니다. Excel interop은 통합 문서에서 일부 값을 추출하는 데 사용됩니다. 그러나 Excel은 프로그램이 종료 된 후에도 열어 둡니다. 나는 기존의 솔루션을 시도했습니다,하지만 여전히 코드 ( Excel 프로세스는 interop 후에 열려 있습니다. 전통적인 방법이 작동하지 않습니다.
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