MFC中使用EXCEL2010方法.doc
文本预览下载声明
使用MFC操作EXCEL文件
一、加载
1、 在VC6.0里创建一个MFC工程
2、打开MFC ClassWizard窗口(查看—建立类向导),选择Automation,单击Add Class按钮,选择From a type library...,弹出文件选择对话框,之后定位到C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE,在生成类中添加所有的对象(其实添加需要的即可,为了简便,不出错保留了冗余),如下图。
3、返回编辑器,查看工程文件,可发现多了EXCEL.H及EXCEL.CPP两个文件,拷贝出来,放在VS2005需要使用excel的工程文件中。
4. 打开stdafx.h头文件确保包含如下头文件:
#include afxdisp.h(这个一般有了)
#include excel.h (手动添加这个即可)
5. 打开TestExcel.cpp文件,修改CTestExcelApp::InitInstance(),加入如下代码:
if( !AfxOleInit() ){
AfxMessageBox(初始化Ole出错!);
return FALSE;
}
为保证编译时不产生重复定义错误(可以验证一下是否成功加载,没有也能正常执行),我编译时出现了很多“类重复定义”异常,打开excel.h文件,在文件开始位置加入如下代码:
#if !defined _HEAD_FILE_EXCEL9_
#define _HEAD_FILE_EXCEL9_
相应的,在文件末尾加入:
#endif
成功
二、操作EXCEL文件
1. 新建一个excel表,并填充两个单元格的实例
void CTestExcelDlg::OnButton1()
{
//Workbooks—Workbook —Worksheets—Worksheet —Range
_Application app; //Excel应用程序接口
Workbooks books; //工作薄集合
_Workbook book; //工作薄
Worksheets sheets; //工作表集合
_Worksheet sheet; //工作表
Range range; //Excel中针对单元格的操作都应先获取其对应的Range对象
Font font;
Range cols;
/*
COleVariant类为VARIANT数据类型的包装,在自动化程序中,通常都使用
VARIANT数据类型进行参数传递。故下列程序中,函数参数都是通过COleVariant
类来转换了的。
*/
//covOptional 可选参数的VARIANT类型
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
if( !app.CreateDispatch(Excel.Application) ){
this-MessageBox(无法创建Excel应用!);
return;
}
//获取工作薄集合
books=app.GetWorkbooks();
//添加一个工作薄
book=books.Add(covOptional);
//获取工作表集合
sheets=book.GetSheets();
//获取第一个工作表
sheet=sheets.GetItem(COleVariant((short)1));
//选择工作表中A1:A1单元格区域
range=sheet.GetRange(COleVariant(A1),COleVariant(A1));
//设置A1=HELLO EXCEL!
range.SetValue(COleVariant(HELLO EXCEL!));
//调整格式,设置粗体
font=range.GetFont();
font.SetBold(COleVariant((short)TRUE));
//选择A2单元格,插入一个公式=RAND()*100000,并设置A2数字格式为货币形
式
range=sheet.GetRange(COleVariant(A2),COleVariant(A2));
range.SetFormula(COleVariant(=RAND()*100000));
range.SetNumberFormat(COleVariant($0.00));
//选择A:A列,设置宽度为自动适应
cols=range.GetEntireColumn();
cols.AutoFit();
//显示Excel表格,并设置状态为用户可控制
app.SetVisible(TRUE);
app.SetUserControl(TRUE);
2. 打开一
显示全部