首页 新闻 搜索 专区 学院

mfc获取excel的范围

0
悬赏园豆:200 [已解决问题] 解决于 2013-08-06 14:49

最近在做一个导入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文档含有冻结行列,获取的就不对,请问各位牛人,这是怎么回事?有什么方法可以解决啊

OldGlory的主页 OldGlory | 初学一级 | 园豆:3
提问于:2013-08-06 10:48
< >
分享
最佳答案
0

冻结的行列中有内容吗?是冻结,还是隐藏?

收获园豆:200
Launcher | 高人七级 |园豆:45045 | 2013-08-06 11:15

有内容,是冻结行列,在滑动的时候这些行列不发生变化,在获取行列的时候,总是1,1的

OldGlory | 园豆:3 (初学一级) | 2013-08-06 11:21

@OldGlory: get_UsedRange 后,你得到了 Range 对象,在使用之前,先调用 Range 的 Select 方法选中 Range。

Launcher | 园豆:45045 (高人七级) | 2013-08-06 11:32

@OldGlory: 还有,m_Wheet = whts.get_Item(_variant_t(nNUM)); 得到 sheet 后,你得 Activate 一下。

Launcher | 园豆:45045 (高人七级) | 2013-08-06 11:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册