2012-07-25 3 views
1

Microsoft.Office.Interop.Excel 개체를 사용하여 C#에서 Excel로 작업 할 때 문제가 있습니다.C에서 Excel 파일 열기

문제는 내가 이미 Excel에서 열려있는 파일에 열려고 시도 할 때 발생합니다. 결국 궁극적으로는 오류가 발생하고 백그라운드에서 실행되는 Excel 인스턴스가 남습니다.

파일을 열기 전에 이미 파일이 열려 있는지 어떻게 알 수 있습니까?

또한 Excel 개체를 삭제하여 Excel 프로세스를 종료하는 규칙은 무엇입니까? 파일이 이미 열려있는 경우

답변

0

안녕하세요 당신은 t의 끝에 Excel 개체를 처리해야합니다. reatment는 (통합 문서, applicationClass, usedRange, 워크 시트)가 이미 개방의 개방

 workbook.Close(false, workbookPath, null); 
     applicationClass.Quit(); 

     while (Marshal.ReleaseComObject(usedRange) > 0) 
     { } 
     while (Marshal.ReleaseComObject(worksheet) > 0) 
     { } 
     while (Marshal.ReleaseComObject(workbook) > 0) 
     { } 
     while (Marshal.ReleaseComObject(applicationClass) > 0) 
     { } 
0

- 이상 그냥 MSDN에 Workbooks.Open 입력합니다. 이 키워드입니다 및 xlLocalSessionChanges을 xlShared) (을)를 : 가 여기에 저장 샘플입니다, 당신은 단지 쿼리하지 않고 (AN 여전히 열) 덮어 씁니다.

  _xlsWorkbook.SaveAs(
       targetFileName              /* Filename */ 
       ,Excel_ForMissing.XlFileFormat.xlExcel8        /* FileFormat */ 
       ,Missing.Value              /* Password */ 
       ,Missing.Value              /* WriteResPassword */ 
       ,Missing.Value              /* ReadOnlyRecommended */ 
       ,Missing.Value              /* CreateBackup */ 
       ,Excel_ForMissing.XlSaveAsAccessMode.xlShared      /* AccessMode */ 
       ,Excel_ForMissing.XlSaveConflictResolution.xlLocalSessionChanges /* ConflictResolution */ 
       ,false              /* AddToMru */ 
       ,Missing.Value              /* TextCodepage */ 
       ,Missing.Value              /* TextVisualLayout */ 
       ,true              /* Local */ 
      );