Невозможно привести объект COM типа «Система .__ ComObject» к типу интерфейса «Excel._Workbook» - PullRequest
2 голосов
/ 09 марта 2011

Я обновляю приложение C # dotnet v1.1 до 3.5 и столкнулся с этой ошибкой при запуске под 3.5 в первый раз.Это приложение, которое успешно работает в течение многих лет, и на моем рабочем столе в 1.1, поэтому я предполагаю, что что-то изменилось в API для Excel COM между 1.1 и 3.5

полное исключение:

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

Эта операция завершилась неудачно, поскольку произошел сбой вызова QueryInterface COM-компонента для интерфейса с IID '{000208DA-0000-0000-C000-000000000046}' из-за следующей ошибки: Такой интерфейс не поддерживается (Исключение из 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();

Как мне решить эту проблему?Я попытался переименовать из Excel.ApplicationClass в Excel.Application, как этот пост в MSDN Social предложил, но не повезло: (

1 Ответ

1 голос
/ 09 марта 2011

получается, что ответом является вызов активировать на рабочем листе, а не на рабочей книге, упс; -)

((Excel._Worksheet)worksheet).Activate();
...