1、VC控制EXCEL的基本操作VC控制EXCEL的基本操作之选择范围篇分类:EXCEL2012-09-03 09:352033人阅读评论(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);/使用变量表示单元格CString CellName;Int
2、i=1;j=1;CellName.Format(_T(“%c%d”),j+64,i); /AZ 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),COleVar
3、iant(_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).pd
4、ispVal);rows.SetRowHeight(COleVariant(long)60);3选择某一列1)range.AttachDispatch(sheet.GetRange(COleVariant(LA1),COleVariant(LA65536);/第一列2)先选择某列中的某个单元格,然后再选择整列range.AttachDispatch(sheet.GetRange(COleVariant(LA1),COleVariant(LA1);/第一列range=range.GetEntireColumn();3)先获得所有列,然后再选择某一列/获得所有列range.AttachDispat
5、ch(sheet.GetColumns(),true);/选择第一列range.AttachDispatch(range.GetItem(COleVariant(long)1),vtMissing).pdispVal,TRUE);4选择全部CELLSrange.AttachDispatch(sheet.GetCells(),TRUE);/加载所有单元格5选择已使用的单元格range.AttachDispatch(sheet.GetUsedRange();/加载已使用的单元格6获取单元格的值1)range=sheet.GetRange(COleVariant(A1),COleVariant(A1
6、);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;
7、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=;VC控制EXCEL的基本操作之设置篇分类:EXCEL2012-09-03 09:372888人阅读评
8、论(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(COleVari
9、ant(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),COle
10、Variant(long)2),COleVariant(unicodeStr); /第二列range.SetItem(COleVariant(long)(i),COleVariant(long)3),COleVariant(long)i); /第三列2 设置行高列宽选中某列 设置列宽/获得所有列range.AttachDispatch(sheet.GetColumns(),true);/设置第一列的列宽 Range colscols.AttachDispatch(range.GetItem(COleVariant(long)1),vtMissing).pdispVal,TRUE);cols.S
11、etColumnWidth(COleVariant(long)10); /设置列宽/设置第4列的列宽cols.AttachDispatch(range.GetItem(COleVariant(long)4),vtMissing).pdispVal,TRUE);cols.SetColumnWidth(COleVariant(long)10); /设置列宽/设置列宽为自动适应cols.AutoFit();设置行高 Range rows; range.AttachDispatch(sheet.GetRows(),TRUE); /选择第一行 rows.AttachDispatch(range.GetI
12、tem(COleVariant(long)1),vtMissing).pdispVal);/设置行高 rows.SetRowHeight(COleVariant(long)60);注意: 行高列宽使用的单位不一样3 设置单元格类型 range.AttachDispatch(sheet.GetCells(),TRUE);/加载所有单元格 range.SetNumberFormat(COleVariant(L); /将单元格设置为文本类型4 设置单元格字体 Font ft; /设置第一列的字体 range.AttachDispatch(sheet.GetColumns(),true); range
13、.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.Ge
14、tRange(COleVariant(_T(A1),COleVariant(_T(D1); /设置底色/ Interior it; 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(COleVarian
15、t(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); _vari
16、ant_t v1; /线型 _variant_t v2; /宽度 _variant_t v3; /颜色 v1.vt=VT_I2; v1.lVal=2; / 线的样式:- no line; 1-solid; 2-big dot;3-small dot;4-dash dot; 5-dash dot dot; 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-dark blue; UnitRge.BorderAround
17、(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(lon
18、g)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(lon
19、g)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(LA2),COl
20、eVariant(LA2);range.SetFormula(COleVariant(L=RAND()*100000);range.SetNumberFormat(COleVariant(L$0.00);10 在单元格中插入图片 Shapes shapes = sheet.GetShapes();/ 从Sheet对象上获得一个Shapes range.AttachDispatch(sheet.GetRange(COleVariant(LE5),COleVariant(LE5); / 获得Range对象,用来插入图片 shapes.AddPicture( Ld:pic.bmp , false ,
21、 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 对选取的区域进行排序 #define xlAscending (long)
22、 1 #define xlDescending (long) 2 #define vOpt COleVariant(long) DISP_E_PARAMNOTFOUND, VT_ERROR) #define xlHeader (long) 1 / 选取的区域有标题 #define xlNoHeader (long) 2 / 选取的区域无标题 一定要正确确定是否有标题,否则排序可能不成功 #define xlMatchCase COleVariant(long) 1) #define xlIgnoreCase COleVariant(long) 0) #define xlTopToBottom
23、(long) 1 / 垂直方向进行排序 #define xlLeftToRight (long) 2 / 水平方向进行排序 #define xlPinYin (long) 1 / this is the default / 按字符的中文拼音进行排序 #define xlStroke (long) 2 / 按每个字符中的笔画数进行排序 VARIANT key1; / these lines set up first arg (key1) to sort V_VT(&key1) = VT_DISPATCH; / 排序时,关键字的vt设置为VT_DISPATCH V_DISPATCH(&key1)
24、= sheet.GetRange(COleVariant(LA1),COleVariant(LA1); / 设置按哪个关键字进行排序 选择单元意为:按此列(或行)为主关键字进行排序 range=sheet.GetRange(COleVariant(LA1),COleVariant(CellName); / 选择对哪些区域内的单元格进行排序 range.Sort(key1, xlAscending, vOpt, vOpt, xlAscending, vOpt,xlAscending,xlNoHeader,vOpt,xlIgnoreCase,xlTopToBottom,xlPinYin); /设置
25、排序 无标题时一定要设置为xlNoHeader 否则不起作用VC控制EXCEL的基本操作之选择范围篇分类:EXCEL2012-09-03 09:352034人阅读评论(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);/使用变量表示单元格CStri
26、ng CellName;Int i=1;j=1;CellName.Format(_T(“%c%d”),j+64,i); /AZ 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),COle
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1