基于MFC的OLE编程方法
一、Excel的对象模型
Application:代表应用程序本身。即Excel应用程序
Workbooks:是Workbook 的集合,代表了工作薄。
Worksheets:是Worksheet的集合,是Workbook的子对象。
Range:是Worksheet的子对象,可以理解为Sheet中一定范围的单元格。
Shapes:是Worksheet的子对象,用于存储图片等信息的单元格。
二、VC操作Excel的初始化过程
1、导入Excel库文件
首先打开Class Wizard,点击"Add class"按钮下的"From a type Library"导入 office安装目录下的"excel.exe"
(适用于Excel2003),然后选择需要用的一些类,比如_Application, _Workbook,Workbooks,Worksheets,_Wroksheet,Range,Shapes等。点击确定后,系统会在你的程序目录下生成excel.h和excel.cpp两个文件,在要使用这些导入的类时加入#include "Excel.h"即可。
2、初始化Application
首先, 初始化COM组件
if(!AfxOleInit())
{
AfxMessageBox("无法初始化COM的动态连接库");
}
然后,创建Excel 服务器(启动Excel)
if (!app.CreateDispatch("Excel.Application"))
{
AfxMessageBox("无法启动Excel服务器");
}
定义app的全局或成员变量 _Application app;
3、设置Excel的状态
app.SetVisible( TRUE ); //使Excel可见
app.SetUserControl( TRUE ); //允许其他用户控制Excel
三、VC对Excel的操作
定义变量
Workbooks books;
_Workbook book;
Worksheets sheets;
_Worksheet sheet;
LPDISPATCH lpDisp;
Range range;
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
1、打开已有的Excel文件
2、新建一个.xls文件,并写入数据
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
//Get the Workbooks collection so that you can add a new workbook
books.AttachDispatch(app.GetWorkbooks()); //得到Workbooks
book = books.Add(covOptional); //得到Workbook
//Get the Worksheets collection so that you can get the IDispatch for the first Worksheet
sheets = book.GetWorksheets(); //得到Worksheets
sheet = sheets.GetItem(COleVariant((short)1)); //得到Worksheet
//分别向每个单元格添加数据
//Excel2000 用函数SetValue()即可, Excel2003用函数SetValue2()
range = sheet.GetRange(COleVariant("A1"), covOptional); //获取A1 Range
range.SetValue2( COleVariant("Date")); //添加数据
range = sheet.GetRange(COleVariant("B1"), covOptional); //获取B1 Range
range.SetValue2(COleVariant("Order")); //添加数据
range = sheet.GetRange(COleVariant("C1"), covOptional); //获取C1 Range
range.SetValue2(COleVariant("Amount")); //添加数据
range = sheet.GetRange(COleVariant("D1"), covOptional); //获取D1 Range
range.SetValue2(COleVariant("Tax")); //添加数据
3、合并单元格
4、向单元格中插入图片(支持BMP、JPG格式,其他没试)
5、将已建的.xls文件另存为
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
book.SaveAs(COleVariant("D:\\3.xls"),covOptional,covOptional,covOptional,covOptional,covOptional,0,covOptional,covOptional,covOptional,covOptional,covOptional);
6、关闭Excel服务
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
book.SetSaved(TRUE); //将Workbook的保存状态设置为已保存,即不让系统提示是否人工保存
range.ReleaseDispatch(); //释放Range对象
sheet.ReleaseDispatch(); //释放Sheet对象
sheets.ReleaseDispatch(); //释放Sheets对象
book.ReleaseDispatch(); //释放Workbook对象
books.ReleaseDispatch(); //释放Workbooks对象
book.Close (covOptional, covOptional,covOptional); //关闭Workbook对象
books.Close(); //关闭Workbooks对象
app.Quit(); //退出_Application
app.ReleaseDispatch (); //释放_Application
出处:http://blog.csdn.net/handsing/archive/2010/04/08/5461070.aspx
VC操作Excel
猜你喜欢
转载自blog.csdn.net/guo0625/article/details/16944409
今日推荐
周排行