如何在Excel中将选中的一块区域单元格信息取出(ATL方法)?

sunyuan_01 2003-08-24 08:08:31
IDispatchPtr spDisp;
spDisp = m_spApp->GetSelection(1);//m_spApp Excel应用接口_Application对象
CComQIPtr<MSExcel::Range> pRange(spDisp);此处已取得选中的区域,对象为pRange,但无法取其区域中单独单元的变量值

取单一指定单元变量
//spDisp = m_spApp->GetRange(_variant_t("A1"),_variant_t("a1"));
//CComQIPtr<MSExcel::Range> pRangeTemp(spDisp);
//(_bstr_t)pRangeTemp->Value; A1单元的变量
...全文
97 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunyuan_01 2003-08-26
  • 打赏
  • 举报
回复
up
sunyuan_01 2003-08-25
  • 打赏
  • 举报
回复
谢谢
ZHENG017(我来过...)
gzshd(郁闷)
循环方法不可取,因为无法知道用户选取那些列,希望有其他方法的人继续!
ZHENG017 2003-08-25
  • 打赏
  • 举报
回复
char* IndexToString(int row, int col, char *strResult)
{
assert(!IsBadWritePtr(strResult,sizeof(char*)));
assert(row >0);
assert(col >0);
if (row < 1 || col < 1 ||IsBadWritePtr(strResult,sizeof(char*)) )
{
return "";
}

if(col > 26)
{
sprintf(strResult, "%c%c%d",'A'+(col-1)/26-1, 'A'+(col-1)%26, row);
}
else
{
sprintf(strResult, "%c%d", 'A' + (col-1)%26, row);
}
return strResult;
}
TCHAR tszRange[32];
IndexToString(iFixedRowCnt,iFixedColCnt,tszRange);
_bstr_t bstrRange (tszRange);
Excel::RangePtr pRange1 = pSheet ->GetRange (bstrRange);
gzshd 2003-08-24
  • 打赏
  • 举报
回复
我看到的程序都是用Range循环得到一个个的单元格来完成对一块(多个单元格)区域的信息进行提取和处理,如
for(int ii=1;ii<6;ii++){
for(int jj=1;jj<6;jj++){
char tt='A'+ii-1;//得到某行
CString str;
str.Format("%c%d",tt,jj);//得到某个单元格,如"B3"
Range r=sheet.GetRange(COleVariant(str),vOpt);
...//处理单元格
}
}

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧