interop 라이브러리를 사용하여 Excel 파일 시트에서 일부 데이터를 읽습니다. Microsoft.Office.Interop.Excel
을 사용하여 데이터를 얻은 다음 시트의 모든 데이터를 읽습니다.Excel 프로세스가 여전히 백그라운드에서 실행됩니다.
Application ExcelApp = new Excel.Application();
Workbook excelWorkbook = ExcelApp2.Workbooks.Open(excelFileNamePath);
_Worksheet excelWorksheet = excelWorkbook.Sheets[excelSheetName];
Range excelRange = excelWorksheet.UsedRange;
//...for loops for reading data
ExcelApp.Quit();
내 응용 프로그램이 종료 된 후에 엑셀 파일을 편집하려고 시도했지만 여는 중에 문제가 발생했습니다. 분명히 엑셀 프로세스는 내가 ExcelApp.Quit()
라고 불렀지 만 백그라운드에서 계속 실행됩니다. 응용 프로그램에서 사용하는 Excel 파일을 올바르게 닫는 방법이 있습니까? 나는 C#에 익숙하지 않아서 여기에 뭔가 빠졌을 것이다.
편집 : 해결! 두 개의 점을 사용하지 못하게하는 com 객체의 경우 rule이 분명합니다.
Excel.Application ExcelApp2 = new Excel.Application();
Excel.Workbooks excelWorkbooks = ExcelApp2.Workbooks;
Excel.Workbook excelWorkbook = excelWorkbooks.Open(excelFileName);
Excel._Worksheet excelWorksheet = excelWorkbook.Sheets[excelSheetName];
//...
excelWorkbook.Close();
Marshal.ReleaseComObject(excelWorkbook);
Marshal.ReleaseComObject(excelWorksheet);
Marshal.ReleaseComObject(excelRange);
ExcelApp2.Quit();
가 살펴 유무 : http://stackoverflow.com/questions/9962157/safely-disposing-excel-interop-objects -in-c – CJBS
해 보셨습니까? http://support.microsoft.microsoft.com/kb/Q317109 –
@CJBS 그들은 답을 찾지 못했습니다! 그러나 나는 거기에있는 제안 중 하나를 구현하려고 노력할 것이다. 감사! – rrh