2009-08-14 2 views
0

입력이 큰 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(); 
+1

당신은 엑셀이 열려 과정을 파일을 시작하는 데 사용하는 코드를 게시 할 수 있습니까? – rahul

+0

evr이 타사 구성 요소 중 하나를 사용하여 Excel에서 읽으려고 했습니까? http://blog.functionalfun.net/2008/06/reading-and-writing-excel-files-with.html을 참조하십시오. 엑셀 API는 훌륭하지만 그것도 매우 메모리/프로세서 소모 접근법 –

+0

다음은 코드입니다 : 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(); –

답변

0

다음은 코드입니다.

직접 시도하려는 경우 here 샘플을보고 무료 시험판 here을 다운로드 할 수 있습니다.

면책 조항 : 나는 자신이 소유하는 SpreadsheetGear LLC

+0

죄송합니다. 답변이 아닙니다. 나는 피닉스의 질문에 답하려고 노력했다. –

0

SpreadsheetGear for .NET 당신이 그것을 열고 대부분의 경우에 할 경우에만 통합 문서를 엽니 다 .NET에서 엑셀 COM Interop를 API를 사용하는 것보다 훨씬 빠르게 실행됩니다

관련 문제