您的位置:首页 > 其它

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

2018-01-17 11:00 330 查看
选择篇
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="";
 } 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: