2012-04-01 4 views
1

왜 이것이 엑셀의 출현을 야기합니까?왜 openfiledialog가 task manager 프로세스에 excel을 추가 할 수 있습니까?

 OpenFileDialog openFileDialog1 = new OpenFileDialog(); 
     DialogResult result = openFileDialog1.ShowDialog(); // Show the dialog. 
     if (result == DialogResult.OK) // Test result. 
     { 
      //EXCEL.EXE *32 is now showing in the task manager! 

내가이 openfiledialog에서 XLSX 파일을 선택하고 내가 작업 관리자에서 프로세스를보고하고 위로 표시된.

다른 사람이 어떻게 가능합니까?

+0

다른 모든 것이 실패하면 코드를 통해 단일 단계! 어떤 줄이 문제를 일으키는 지 신속하게 알려야합니다. 또한 Excel에서 반환 된 개체는 모두 완료되면 ReleaseComObject를 통해 릴리스해야합니다. xlWorkBook, xlWorkSheet, xlWorkSheet.get_Range, EmailList.Cells. 어떤 Excel도 열리게 될 것입니다. – Will

+0

ps. 제쳐두고, 정리 코드는 성공 또는 예외에 관계없이 호출되도록 finally 블록에 있어야합니다. – Will

+0

정말 고마워요. 왜 편집 된 질문을 볼 수 있습니까? 내가 이유를 찾은 것 같아요 –

답변

1

Excel이 이미 열려있는 경우 새 인스턴스를 만드는 대신이 인스턴스를 가져와야합니다.

using System.Runtime.InteropServices; 

... 

Excel.Application xl = null; 
try { 
    // Try to get an existing instance 
    xl = (Excel.Application)Marshal.GetActiveObject("Excel.Application"); 
} catch (COMException ex) { 
    // Excel was not open. Open a new instance 
    xl = new Excel.ApplicationClass(); 
} 
+0

많은 도움을 주셔서 감사합니다. 내 응용 프로그램이 엑셀로 열리고 닫아야합니다. "엑셀이 이미 열렸습니까?" –

+0

??????????????/ –

+0

이미 열려 있거나 열려있는 Excel 응용 프로그램이있을 수 있습니다. 후자의 경우 작업 관리자에서이를 볼 수 있습니다. –

관련 문제