C++怎么操作EXCEL

一、新建EXCEL表

COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);

   app.CreateDispatch("EXCEL.Application");

   app.SetVisible(false);                                   //设置表可见性

   app.SetDisplayFullScreen(false);                         //设置不全屏显示

   app.SetDisplayAlerts(false);                             //屏蔽警告

二、打开EXCEL表

   char path[MAX_PATH];

   GetCurrentDirectory(MAX_PATH,path);                      //获取当前目录

   CString strPath = path;

   strPath += "\\计算结果";

   books.AttachDispatch(app.GetWorkbooks(),true);

   book.AttachDispatch(books.Add(_variant_t(strPath)));

三、获取工作表

   sheets = book.GetWorksheets();

   sheet = sheets.GetItem(COleVariant((short)1));              

四、新建工作表

   sheets = book.GetWorksheets();

   sheets.Add(vtMissing,vtMissing,_variant_t((long)5[u1] ),vtMissing);  

五、选择工作表某个区域   

   1、range = sheet.GetRange(COleVariant("A1"),COleVariant("A1"));

   2、range.AttachDispatch(sheet.GetRange(_variant_t("K39"),_variant_t("K39")),TRUE);

六、合并单元格

   range = sheet.GetRange(COleVariant("A1"),COleVariant("A1"));  //先选择区域

range.Merge(_variant_t((long)0));                             //再合并

七、设置单元格内容

   1、单个单元格赋值

range = sheet.GetRange(COleVariant("A1"),COleVariant("A1"));  //先选择区域

   range.SetValue2(COleVariant("××"));                         //再赋值

   2、批量赋值

   CString sCell;                                         //定义字符串变量

   for(int i=0; i<360; i++)

{

       sCell.Format("A%d",i+2);                                   //选择单元格

       range = sheet.GetRange(COleVariant(sCell[u2] ),COleVariant(sCell[u3] ));

       range.SetValue2(COleVariant((short)(1.5*i)));              //再赋值

    }

八、设定单元格字体,对齐方式,颜色,粗体,斜体,背景色,列宽,行高

   Font ft;                                                   //定义字体变量

   Interior it;                                               //定义背景色变量

   range = sheet.GetRange(COleVariant("A1"),COleVariant("A1"));  //先选择区域

   range.SetHorizontalAlignment(_variant_t((long)-4131));      //水平居中对齐

   range.SetVerticalAlignment(_variant_t((long)-4108));        //竖直居中对齐

    range.SetColumnWidth(COleVariant("20"));                         //列宽

range.SetRowHeight(COleVariant("25"));                          //行高

    ft.AttachDispatch(range.GetFont());                            //匹配

ft.SetBold(_variant_t((long)0));           //设置粗体,0-不加粗;1-加粗

ft.SetItalic(_variant_t((long)0));         //设置斜体,0-不斜;1-斜

    ft.SetSize(_variant_t((long)11));                         //字大小

    ft.SetColorIndex(_variant_t((long)5));                       //字颜色           

    it.AttachDispatch(range.GetInterior());

    it.SetColorIndex(_variant_t((long)8));                            //背景色

  

说明:

对齐方式:(水平)居中:-4108  靠左:-4131  靠右:-4152

           (竖直)居中:-4108  靠上:-4160  靠下:-4107

      线颜色值:1-黑;2-白;3-红;5蓝;6黄;7-粉红;8-浅蓝;9-灰;10-绿;

  九、获取单元格数据

    COleVariant rValue,gValue;                 //定义COleVariant变量

CString quzhi;                                //定义字符串变量

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

 rValue=COleVariant(range.GetValue(gValue));              //取得单元格数据

    rValue.ChangeType(VT_BSTR);                             //数据转换格式

 quzhi=rValue.bstrVal;                       //将单元格数据赋在字符串变量中

 十、绘单元格边框

   Range rg ;                                     //定义变量

   1、绘横线

   CString strCell1strCell2,strCell3;

for (i=5;i<21;i++)

{

      strCell1.Format("I%d",i*2);

      strCell2.Format("K%d",i*2);                                                                    

      rg.AttachDispatch(sheet.GetRange(COleVariant(strCell1),

COleVariant(strCell2)),true);

      rg.BorderAround(_variant_t((long)1),_variant_t((long)2),

_variant_t((long)1),vtMissing);

                         //线型            // 线宽              //颜色

}

2、绘竖线

for(i=0;i<20;i++)

{

 strCell1.Format("%c12",(char)('I'+i));

   strCell2.Format("%c40",(char)('I'+i));

   rg.AttachDispatch(sheet.GetRange(COleVariant(strCell1)

,COleVariant(strCell2)),true);

   rg.BorderAround(_variant_t((long)1),_variant_t((long)2),

_variant_t((long)3),vtMissing);         

 }

 3、绘外框

   strCell3=(CString)CHAR(i+74)+"40";

   rg.AttachDispatch(sheet.GetRange(COleVariant("I10"),

COleVariant(strCell3)),TRUE);

   rg.BorderAround(_variant_t((long)1),_variant_t((long)3),

_variant_t((long)5),vtMissing);

 

十一、保存结果             

    book.SaveAs(COleVariant(strPath),covOptional,

    covOptional,covOptional,

    covOptional,covOptional,                                               (long)0,covOptional,covOptional,covOptional,

    covOptional,covOptional);

十二、关闭表及释放变量

    app.Quit();

    sheet.ReleaseDispatch();

    sheets.ReleaseDispatch();

book.ReleaseDispatch();   

books.ReleaseDispatch();

    app.ReleaseDispatch();


如果是要操作excel文件的话,建议使用已经封装好了的类,功能强大也好用
一种是使用excel.h和excel.cpp
还可以使用CSpreadSheet.h这个文件
这几个文件网上都有的下的,也有相应的使用说明,很好用的

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值