导入必要的类
打开MFC ClassWizard,选择Add Class->From a type Library
找到Excel安装目录下EXCEL.EXE,向项目工程中添加基本的7个类,分别是:_Application,Font,Range,_WorkBook,WorkBooks,_WorkSheet,WorkSheets
返回编辑器,查看工程文件,可发现多了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);
//
贴一张运行效果图