加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 为什么不能从Excel互操作设置一个对象?

发布时间:2020-12-15 18:05:57 所属栏目:百科 来源:网络整理
导读:试图获得工作表的引用(使用Excel interop): Excel.Application xl = new Excel.ApplicationClass();Excel.Workbooks xlWorkBooks = xl.Workbooks;Excel.Workbook xlWorkBook = xlWorkBooks.Open(fileName,false,5,"",true,Excel.XlPlatform.xlWindows,"t",
试图获得工作表的引用(使用Excel interop):
Excel.Application xl = new Excel.ApplicationClass();
Excel.Workbooks xlWorkBooks = xl.Workbooks;
Excel.Workbook xlWorkBook = xlWorkBooks.Open(fileName,false,5,"",true,Excel.XlPlatform.xlWindows,"t",1,0);

// Next line crashes
Excel.Worksheets xlWorkSheets = (Excel.Worksheets) xlWorkBook.Worksheets;

错误是它不能转换它:

Unable to cast COM object of type ‘System.__ComObject’ to interface type ‘Microsoft.Office.Interop.Excel.Worksheets’. This operation failed because the QueryInterface call on the COM component for the interface with IID ‘{000208B1-0000-0000-C000-000000000046}’ failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).

我的演员是不正确的吗?

解决方法

是的,你的演员错了.

_Workbook.Sheets给你一个Sheets实例.此界面为您提供所有类型的工作表,而不仅仅是工作表;主要包括图表,宏图等.

另一方面,Worksheets界面只给你工作表 – 而不是图表.

接口不能彼此分配;因此,您会收到COM错误.这是令人困惑的 – 我甚至不确定是否可以通过PIA获得工作表接口的实例 – 但是这是Office的Interop for ya.

只要您使用_Workbook.Worksheets属性而不是_Workbook.Sheets属性,您应该得到一个仅返回Worksheet对象的表单实例,尽管该接口能够提供其他类型的工作表.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读