最近在做一个导入Excel的文件,需要获取到Excel文档的使用范围,用的是excel2010,VS2003,代码如下:
wbks.AttachDispatch(m_ExlApp.get_Workbooks());
wbk=wbks.Open(m_StrExcelPath,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,av ar,avar,avar);
whts = wbk.get_Sheets();
short nNUM = 1;
m_Wheet = whts.get_Item(_variant_t(nNUM));
rne.AttachDispatch(m_Wheet.get_UsedRange());
m_Range.AttachDispatch(rne.get_Rows());
long m_iRowNum = m_Range.get_Count();//获取已使用的行数
m_Range.AttachDispatch(rne.get_Columns());
long m_iColNum = m_Range.get_Count();//获取已使用的列数
但是获取到的使用范围跟实际不符,如果Excel文档含有冻结行列,获取的就不对,请问各位牛人,这是怎么回事?有什么方法可以解决啊
冻结的行列中有内容吗?是冻结,还是隐藏?
有内容,是冻结行列,在滑动的时候这些行列不发生变化,在获取行列的时候,总是1,1的
@OldGlory: get_UsedRange 后,你得到了 Range 对象,在使用之前,先调用 Range 的 Select 方法选中 Range。
@OldGlory: 还有,m_Wheet = whts.get_Item(_variant_t(nNUM)); 得到 sheet 后,你得 Activate 一下。