分享

VC控制EXCEL的基本操作之选择范围篇

 advanced00 2017-05-04

选择篇

1 选择单元格

 

//选择一个单元格

range.AttachDispatch(sheet.GetRange(COleVariant(_T('A1')),COleVariant(_T('A1'))),TRUE);

 

//选择多个单元格

range.AttachDispatch(sheet.GetRange(COleVariant(_T('A1')),COleVariant(_T('D1'))),TRUE);

 

//使用变量表示单元格

CString CellName;

Int i=1;j=1;

CellName.Format(_T(“%c%d”),j 64,i);   //A–Z  65-90

 

 

//加载单元格

rnge.AttachDispatch(range.GetRange(COleVariant(CellName),COleVariant(CellName)));

2 选择某行

 

1

//选择第一行

range.AttachDispatch(sheet.GetRange(COleVariant(_T('A1')),COleVariant(_T('IV1'))),TRUE);

 

//选择前5

range.AttachDispatch(sheet.GetRange(COleVariant(_T('A1')),COleVariant(_T('IV5'))),TRUE);

 

2)先选择某行中的某个单元格,然后再选择整行

       Range rows;

 

       rows.AttachDispatch(sheet.GetRange(COleVariant(_T('A1')),COleVariant(_T('A1'))),TRUE);

       rows=rows.GetEntireRow();

 

3)获得所有的行,然后再选择指定行

    Range rows;

 

       range.AttachDispatch(sheet.GetRows(),TRUE);

       //选择第一行

       rows.AttachDispatch(range.GetItem(COleVariant((long)1),vtMissing).pdispVal);

       rows.SetRowHeight(COleVariant((long)60));

 

3 选择某一列

 

1

range.AttachDispatch(sheet.GetRange(COleVariant(L'A1'),COleVariant(L'A65536')));  
//第一列

 

2)先选择某列中的某个单元格,然后再选择整列

 

range.AttachDispatch(sheet.GetRange(COleVariant(L'A1'),COleVariant(L'A1')));  
//第一列

range=range.GetEntireColumn();

 

3)先获得所有列,然后再选择某一列

//获得所有列

range.AttachDispatch(sheet.GetColumns(),true);

//选择第一列

range.AttachDispatch(range.GetItem(COleVariant((long)1),vtMissing).pdispVal,TRUE);

 

4 选择全部CELLS

 

range.AttachDispatch(sheet.GetCells(),TRUE);//加载所有单元格

 

5 选择已使用的单元格

range.AttachDispatch(sheet.GetUsedRange());//加载已使用的单元格

 

6 获取单元格的值

1)

range=sheet.GetRange(COleVariant('A1'),COleVariant('A1'));

COleVariant rValue;
rValue=COleVariant(range.GetValue());
rValue.ChangeType(VT_BSTR);
this->MessageBox(CString(rValue.bstrVal));

 

2)

 

//读取第一个单元格的值

 range.AttachDispatch(sheet.GetCells());

 range.AttachDispatch(range.GetItem (COleVariant((long)1),COleVariant((long)1)).pdispVal );

 

 vResult =range.GetValue();

 

 CString str;

 if(vResult.vt == VT_BSTR)       //字符串

 {

        str=vResult.bstrVal;

 }

 else if (vResult.vt==VT_R8)     //8字节的数字

 {

        str.Format(L'%f',vResult.dblVal);

 }

 else if(vResult.vt==VT_DATE)    //时间格式

 {

        SYSTEMTIME st;

        VariantTimeToSystemTime((long)&vResult.date, &st);

 }

 else if(vResult.vt==VT_EMPTY)   //单元格空的

 {

        str='';

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多