VC控制EXCEL的基本操作.docx
《VC控制EXCEL的基本操作.docx》由会员分享,可在线阅读,更多相关《VC控制EXCEL的基本操作.docx(15页珍藏版)》请在冰豆网上搜索。
![VC控制EXCEL的基本操作.docx](https://file1.bdocx.com/fileroot1/2023-2/13/913773fa-4263-4c2d-981d-b71bc20a2cda/913773fa-4263-4c2d-981d-b71bc20a2cda1.gif)
VC控制EXCEL的基本操作
VC控制EXCEL的基本操作之选择范围篇
分类:
EXCEL2012-09-0309:
35 2033人阅读 评论(0) 收藏 举报
exceldatec
选择篇
1 选择单元格
//选择一个单元格
range.AttachDispatch(sheet.GetRange(COleVariant(_T("A1")),COleVariant(_T("A1"))),TRUE);
//选择多个单元格
range.AttachDispatch(sheet.GetRange(COleVariant(_T("A1")),COleVariant(_T("D1"))),TRUE);
//使用变量表示单元格
CStringCellName;
Inti=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)先选择某行中的某个单元格,然后再选择整行
Rangerows;
rows.AttachDispatch(sheet.GetRange(COleVariant(_T("A1")),COleVariant(_T("A1"))),TRUE);
rows=rows.GetEntireRow();
3)获得所有的行,然后再选择指定行
Rangerows;
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"));
COleVariantrValue;
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();
CStringstr;
if(vResult.vt==VT_BSTR) //字符串
{
str=vResult.bstrVal;
}
elseif(vResult.vt==VT_R8) //8字节的数字
{
str.Format(L"%f",vResult.dblVal);
}
elseif(vResult.vt==VT_DATE) //时间格式
{
SYSTEMTIMEst;
VariantTimeToSystemTime((long)&vResult.date,&st);
}
elseif(vResult.vt==VT_EMPTY) //单元格空的
{
str="";
}
VC控制EXCEL的基本操作之设置篇
分类:
EXCEL2012-09-0309:
37 2888人阅读 评论
(2) 收藏 举报
excelshapesfloatupc
设置篇
1设置单元格的值
1)
选中指定单元格,使用SetValue设置值
CellName.Format(_T("A%d"),i);//单元格的名称
range.AttachDispatch(sheet.GetRange(COleVariant(CellName),COleVariant(CellName)));//加载单元格range.SetValue(COleVariant(subFileName));
CellName.Format(_T("C%d"),i);//单元格的名称
range.AttachDispatch(sheet.GetRange(COleVariant(CellName),COleVariant(CellName)));//加载单元格
range.SetValue(COleVariant((long)i));
2)
选中所有的单元格,使用SetItem设置指定单元格的值
range.AttachDispatch(sheet.GetCells(),TRUE);//加载所有单元格
//设置第I行第1、2、3列的值
range.SetItem(COleVariant((long)(i)),COleVariant((long)1),COleVariant(subFileName));//第一列
range.SetItem(COleVariant((long)(i)),COleVariant((long)2),COleVariant(unicodeStr)); //第二列
range.SetItem(COleVariant((long)(i)),COleVariant((long)3),COleVariant((long)i)); //第三列
2设置行高列宽
选中某列设置列宽
//获得所有列
range.AttachDispatch(sheet.GetColumns(),true);
//设置第一列的列宽 Rangecols
cols.AttachDispatch(range.GetItem(COleVariant((long)1),vtMissing).pdispVal,TRUE);
cols.SetColumnWidth(COleVariant((long)10));//设置列宽
//设置第4列的列宽
cols.AttachDispatch(range.GetItem(COleVariant((long)4),vtMissing).pdispVal,TRUE);
cols.SetColumnWidth(COleVariant((long)10));//设置列宽
//设置列宽为自动适应
cols.AutoFit();
设置行高
Rangerows;
range.AttachDispatch(sheet.GetRows(),TRUE);
//选择第一行
rows.AttachDispatch(range.GetItem(COleVariant((long)1),vtMissing).pdispVal);
//设置行高
rows.SetRowHeight(COleVariant((long)60));
注意:
行高列宽使用的单位不一样
3设置单元格类型
range.AttachDispatch(sheet.GetCells(),TRUE);//加载所有单元格
range.SetNumberFormat(COleVariant(L"@"));//将单元格设置为文本类型
4设置单元格字体
Fontft;
//设置第一列的字体
range.AttachDispatch(sheet.GetColumns(),true);
range.AttachDispatch(range.GetItem(COleVariant((long)1),vtMissing).pdispVal,TRUE);
//字体作用范围
ft.AttachDispatch(range.GetFont());
ft.SetName(COleVariant(_T("宋体")));
ft.SetSize(COleVariant((long)48));
ft.SetBold(COleVariant((long)1));//粗体
ft.SetColorIndex(COleVariant((long)2));//设置字体颜色
5设置单元格背景色
range.AttachDispatch(sheet.GetRange(COleVariant(_T("A1")),COleVariant(_T("D1"))));
//////////////设置底色/////////////////
Interiorit;
it.AttachDispatch(range.GetInterior());
it.SetColorIndex(COleVariant((long)11));//标题底色
////表格内容的底色////
range.AttachDispatch(sheet.GetRange(COleVariant(_T("A2")),COleVariant(_T("D5"))));
it.AttachDispatch(range.GetInterior());
it.SetColorIndex(COleVariant((long)15));
6设置表格边框
1)
range.AttachDispatch(sheet.GetRange(COleVariant(_T("A2")),COleVariant(_T("D5"))));
//LineStyle=线型Weight=线宽ColorIndex=线的颜色(-4105为自动)
range.BorderAround(COleVariant((long)1),(long)2,((long)-4105),vtMissing);//设置边框
2)
range.AttachDispatch(sheet.GetRange(COleVariant(_T("A2")),COleVariant(_T("D5"))));
_variant_tv1; //线型
_variant_tv2; //宽度
_variant_tv3; //颜色
v1.vt=VT_I2;
v1.lVal=2;//线的样式:
-noline;1-solid;2-bigdot;3-smalldot;4-dashdot;5-dashdotdot;
v2.vt=v1.vt;
v2.lVal=3;//线的粗细程度
v3.vt=v1.vt;
v3.lVal=1;//1-black;2-white;3-red;4-green;5-blue;6-yellow;7-pink;8-darkblue;
UnitRge.BorderAround(v1,v2,v3,vtMissing);//设置边框
7合并单元格
1)
//合并单元格
//加载要合并的单元格
range.AttachDispatch(sheet.GetRange(COleVariant(_T("A1")),COleVariant(_T("D1"))),TRUE);
range.Merge(COleVariant((long)0));
2)
//将第一个单元格合并成行,列
range.AttachDispatch(sheet.GetCells());
unionRange.AttachDispatch(range.GetItem(COleVariant((long)1),COleVariant((long)1)).pdispVal);//第一个单元格
unionRange.AttachDispatch(unionRange.GetResize(COleVariant((long)3),COleVariant((long)2))); //GetResize(3,2)从第一个单元格开始合并行列的所有单元格
unionRange.Merge(COleVariant((long)0)); //合并单元格
8设置单元格文本为自动换行及排列方式
range.AttachDispatch(sheet.GetUsedRange());//加载已使用的单元格
range.SetWrapText(COleVariant((long)1));//设置单元格内的文本为自动换行
//设置齐方式为水平垂直居中
//水平对齐:
默认=1,居中=-4108,左=-4131,右=-4152
//垂直对齐:
默认=2,居中=-4108,左=-4160,右=-4107
range.SetHorizontalAlignment(COleVariant((long)-4108));
range.SetVerticalAlignment(COleVariant((long)-4108));
9在单元格中插入公式
//选择A2单元格,插入一个公式"=RAND()*100000",并设置A2数字格式为货币形式
range=sheet.GetRange(COleVariant(L"A2"),COleVariant(L"A2"));
range.SetFormula(COleVariant(L"=RAND()*100000"));
range.SetNumberFormat(COleVariant(L"$0.00"));
10在单元格中插入图片
Shapes shapes = sheet.GetShapes();//从Sheet对象上获得一个Shapes
range.AttachDispatch(sheet.GetRange(COleVariant(L"E5"),COleVariant(L"E5")));//获得Range对象,用来插入图片
shapes.AddPicture(L"d:
\\pic.bmp" , false , true , (float)range.GetLeft().dblVal
,(float)range.GetTop().dblVal,(float)range.GetWidth().dblVal,(float)range.GetHeight().dblVal);
ShapeRange sRange = shapes.GetRange(_variant_t(long
(1)));
sRange.SetHeight(float(30)); //在RANGE范围内设置图片宽高
sRange.SetWidth(float(30));
11对选取的区域进行排序
#definexlAscending(long)1
#definexlDescending(long)2
#definevOptCOleVariant((long)DISP_E_PARAMNOTFOUND,VT_ERROR)
#definexlHeader(long)1 //选取的区域有标题
#definexlNoHeader(long)2 //选取的区域无标题 一定要正确确定是否有标题,否则排序可能不成功
#definexlMatchCaseCOleVariant((long)1)
#definexlIgnoreCaseCOleVariant((long)0)
#definexlTopToBottom(long)1 //垂直方向进行排序
#definexlLeftToRight(long)2 //水平方向进行排序
#definexlPinYin(long)1//thisisthedefault //按字符的中文拼音进行排序
#definexlStroke(long)2 //按每个字符中的笔画数进行排序
VARIANTkey1;//theselinessetupfirstarg(key1)tosort
V_VT(&key1)=VT_DISPATCH; //排序时,关键字的vt设置为VT_DISPATCH
V_DISPATCH(&key1)=sheet.GetRange(COleVariant(L"A1"),COleVariant(L"A1")); //设置按哪个关键字进行排序选择单元意为:
按此列(或行)为主关键字进行排序
range=sheet.GetRange(COleVariant(L"A1"),COleVariant(CellName)); //选择对哪些区域内的单元格进行排序
range.Sort(key1,xlAscending,vOpt,vOpt,xlAscending,vOpt,xlAscending,xlNoHeader,vOpt,xlIgnoreCase,xlTopToBottom,xlPinYin);//设置排序无标题时一定要设置为xlNoHeader 否则不起作用
VC控制EXCEL的基本操作之选择范围篇
分类:
EXCEL2012-09-0309:
35 2034人阅读 评论(0) 收藏 举报
exceldatec
选择篇
1 选择单元格
//选择一个单元格
range.AttachDispatch(sheet.GetRange(COleVariant(_T("A1")),COleVariant(_T("A1"))),TRUE);
//选择多个单元格
range.AttachDispatch(sheet.GetRange(COleVariant(_T("A1")),COleVariant(_T("D1"))),TRUE);
//使用变量表示单元格
CStringCellName;
Inti=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)先选择某行中的某个单元格,然后再选择整行
Rangerows;
rows.AttachDispatch(sheet.GetRange(COleVariant(_T("A1")),COle