Ang*_*ker 10 c# excel interop .net-2.0
尝试获取对工作表的引用(使用Excel interop):
Excel.Application xl = new Excel.ApplicationClass();
Excel.Workbooks xlWorkBooks = xl.Workbooks;
Excel.Workbook xlWorkBook = xlWorkBooks.Open(fileName, 0, false, 5, "",
"", true, Excel.XlPlatform.xlWindows, "\t",
false, false, 0, true, 1, 0);
// Next line crashes
Excel.Worksheets xlWorkSheets = (Excel.Worksheets) xlWorkBook.Worksheets;
Run Code Online (Sandbox Code Playgroud)
错误是它无法投射它:
无法将"System .__ ComObject"类型的COM对象转换为接口类型"Microsoft.Office.Interop.Excel.Worksheets".此操作失败的原因是对IID"{000208B1-0000-0000-C000-000000000046}"的界面处的COM组件调用QueryInterface失败,因为以下错误:不支持此接口(从HRESULT异常:0x80004002(E_NOINTERFACE)) .
我的演员是不正确的?
是的,你的演员是错的.
_Workbook.Sheets
为您提供了一个Sheets实例.此界面为您提供所有类型的工作表,而不仅仅是工作表; 主要包括图表,宏观表等.
另一方面,Worksheets界面只为您提供工作表 - 而不是图表.
接口不能相互分配; 因此,您收到COM错误.令人困惑的是 - 我甚至不确定是否有可能Worksheets
通过PIA 获得接口的实例- 但那是Office Interop for ya.
只要你使用_Workbook.Worksheets
属性而不是_Workbook.Sheets
属性,你应该得到一个Sheets
只返回Worksheet
对象的实例- 尽管接口能够提供其他类型的工作表.