2011-03-09 3 views
1

C# dotnet v1.1 응용 프로그램을 3.5로 업그레이드하고 처음 3.5 이하에서 실행하면이 오류가 발생합니다. 이 년 동안 생산 행복하게 실행 및 1.1에서 내 바탕 화면에 한 응용 프로그램입니다, 그래서 믿고있어 뭔가 1.1 및 3.5'System .__ ComObject'유형의 COM 개체를 'Excel._Workbook'인터페이스 유형으로 캐스팅 할 수 없습니다.

전체 예외 사이에 엑셀 COM의 API에 변경된 :

InvalidClassCastException was unhandled 
Unable to cast COM object of type 'System.__ComObject' to interface type 'Excel._Workbook'. 

다음 오류로 인해 IID '{000208DA-0000-0000-C000-000000000046}'의 인터페이스에 대한 COM 구성 요소의 QueryInterface 호출이 실패 했으므로이 작업을 수행하지 못했습니다. 해당 인터페이스가 지원되지 않습니다 (HRESULT 예외 : 0x80004002 (E_NOINTERFACE)).

코드 :

Excel.ApplicationClass excel = new Excel.ApplicationClass(); 
excel.Application.Workbooks.Add(true); 
((Excel.Range)excel.Cells[1,1]).EntireRow.Font.Bold = true;  

excel.Cells[1,1] = "col a"; 
excel.Cells[1,2] = "col b"; 
excel.Cells[1,3] = "col c"; 

// here loop and populate rows, nothing special just as above, all strings 

excel.Visible = true; 

Excel.Worksheet worksheet = (Excel.Worksheet)excel.ActiveSheet; 
((Excel._Workbook)worksheet).Activate(); 

어떻게이 문제를 해결합니까? 나는 MSDN 사회 제안에 this post으로이 Excel.Application에 Excel.ApplicationClass에서 이름을 변경했지만, 운 :(

+1

도서는 시트 모음입니다. 워크 시트를 워크 북으로 캐스팅하면 큰 소리가납니다. 그게 어떻게 작동 할 수 있었는지 나는 꽤 신비 롭다. –

+0

일반적으로 PIA에서'_' 접두사가 붙은 클래스 (및 몇 개의 인터페이스?)를 사용하지 * 않습니다 *. 이것들은 "내부"로 간주되어야합니다 - PIA 계층 구조가 아주 잘 바뀔 수도 있습니다. –

답변

1

은 ;-) 대답은 워크 시트가 아닌 통합 문서, 죄송에 활성화 호출하는 것입니다 판명되지

((Excel._Worksheet)worksheet).Activate(); 
관련 문제