CListCtrl控件导出Excel格式文件

来源:互联网 发布:淘宝开内衣店店铺简介 编辑:程序博客网 时间:2024/05/20 19:32

导入必要的类

打开MFC ClassWizard,选择Add Class->From a type Library

找到Excel安装目录下EXCEL.EXE,向项目工程中添加基本的7个类,分别是:_Application,Font,Range,_WorkBook,WorkBooks,_WorkSheet,WorkSheets

 

 CListCtrl控件导出Excel格式文件

返回编辑器,查看工程文件,可发现多了EXCEL.H及EXCEL.CPP两个文件。

打开stdafx.h头文件确保包含如下头文件: 

#include  #include "excel.h" 

 

在控件的相应代码中添加:

void DlgInfo::OnButton1()

{

    // TODO: Add your control notification handler code here

    _Application app;              //Excel应用程序接口

    WorkBook book;

    Workbooks books;

   _WorkSheet sheet;

    _Worksheets sheets;

    Range range;

    Font font;

    Range cols;

    CString tem,stri,strA,strB;

 

    COleVariant covOptional((long)

           DISP_E_PARAMNOTFOUND,VT_ERROR);

    if (!app.CreateDispatch(_T("Excel.Application")))

    {

           this->MessageBox(_T("无法创建Excel应用!"));

           return;

    }

    books = app.GetWorkbooks();    //获取工作薄集合

    book = books.Add(covOptional);  //添加一个工作薄

    sheets = book.GetWorksheets();    //获取工作表集合

    sheet = sheets.GetItem(COleVariant((short)1));        //获取第一个工作表

/////////////////////////第一列/////////////////////////////////////////////////

    //设置列名

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

                         COleVariant(_T("A1")));                         //选择工作表中A1:A1单元格区域

    range.SetValue2(COleVariant(_T("序号")));   //A1:A1中填入“序号”

           //设置字体为粗体

    font = range.GetFont();

    font.SetBold(COleVariant((short)TRUE));

    //写入数据

    arr1.RemoveAll();    //清空数组(用数组存该列的所有数据)

    int line=list->GetItemCount();    //查询clistctrl控件中记录数

    CString str_line;

    str_line.Format("%d",line+1);   

    for(int i=0;i

    {

                  tem=list->GetItemText(i,0);

                  arr1.Add(tem); 

    }

    for(i=1;i<=line;i++)          //循环将数组的内容写到Excel中

    {

           stri.Format("%d",i+1);

           strA="A"+stri;

           strB="A"+str_line; 

           range = sheet.GetRange(COleVariant(_T(strA)),

                  COleVariant(_T(strB)));        //确定表的范围

           range.SetValue2(COleVariant(_T(arr1[i-1])));

    }

 

    //选择整列,并设置宽度为自适应

    cols = range.GetEntireColumn();

    cols.AutoFit();

//后面几列处理方法相同,省略。

    app.SetVisible(TRUE);  //显示表格

 app.SetUserControl(TRUE);

//////////////////////////////////////////////////////////////

贴一张运行效果图

CListCtrl控件导出Excel格式文件