입력이 큰 Excel 파일 인 C# 응용 프로그램을 만들었습니다.C# 응용 프로그램을 실행하는 동안 Excel 파일을 외부로 여는 데 문제가 발생했습니다.
내 코드에서는 프로세스를 연 다음 닫습니다. 전체 과정은 약 15-20 분이 걸립니다. 이 시간 동안 다른 Excel 파일 (1)을 외부에서 열려고 시도하는 동안 입력 된 Excel 파일 (2) (현재 처리 중) 중 하나가이 파일과 함께 열립니다. 이 (2)를 닫으려고하면 예외가 발생하고 도구가 프로세스를 중단합니다.
Excel 파일이 같은 인스턴스에서 열리기 때문에이 문제가 발생한다고 생각합니다. 어떻게 이것을 피할 수 있습니까?
이Excel.ApplicationClass objExcelApp = new Excel.ApplicationClass();
Excel.Workbook objWorkbook = objExcelApp.Workbooks.Open("File Name",0, true, 1, "", "", true, Excel.XlPlatform.xlWindows,Type.Missing, false, false, 0,true);
Excel.Worksheet objWorksheet = (Excel.Worksheet) objWorkbook.Worksheets.get_Item(1);
Excel.Range objRangeData =objWorksheet.UsedRange;
// Some proces
GC.Collect();
objRangeData.Clear();
objWorkbook.Close(false, strDictFile, false);
objExcelApp.Workbooks.Close();
objExcelApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(objRangeData);
System.Runtime.InteropServices.Marshal.ReleaseComObject(objWorksheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(objWorkbook); System.Runtime.InteropServices.Marshal.ReleaseComObject(objExcelApp);
objWorksheet = null;
objWorkbook = null;
objExcelApp = null;
GC.Collect();
GC.WaitForPendingFinalizers();
당신은 엑셀이 열려 과정을 파일을 시작하는 데 사용하는 코드를 게시 할 수 있습니까? – rahul
evr이 타사 구성 요소 중 하나를 사용하여 Excel에서 읽으려고 했습니까? http://blog.functionalfun.net/2008/06/reading-and-writing-excel-files-with.html을 참조하십시오. 엑셀 API는 훌륭하지만 그것도 매우 메모리/프로세서 소모 접근법 –
다음은 코드입니다 : ApplicationClass objApp = new Excel.ApplicationClass(); 통합 문서 objWb = objApp .Workbooks.Open ("파일 이름", 0, true, 1, "", "", true, Excel.XlPlatform.xlWindows, Type.Missing, false, false, 0, true); 워크 시트 objWs = (워크 시트) objWb.Worksheets.get_Item (1); // GC.Collect()를 처리하십시오. objWb.Close (false, strDictFile, false); objApp.Workbooks.Close(); objApp.Quit(); ReleaseComObject (objWs); ReleaseComObject (objWb); ReleaseComObject (objApp); objWs = null; objWb = null; objApp = null; GC.Collect(); GC.WaitForPendingFinalizers(); –