无法将“System .__ ComObject”types的COM对象转换为接口types“Excel._Workbook”

我正在将C#dotnet v1.1应用程序升级到3.5,并在第一次运行时遇到此错误。 这是一个运行愉快,生产多年的应用程序,并在我的桌面1.1,所以我假设的东西在Excel中的1.1和3.5之间的COM更改

完全例外:

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

此操作失败,因为IIC“{000208DA-0000-0000-C000-000000000046}”接口的COM组件上的QueryInterface调用失败,原因是出现以下错误:没有此类接口支持(exception来自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社会build议,但没有运气:(

原来的答案是调用在WorkSheet,而不是工作簿激活,oops 😉

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