VC操作Excel

来源:互联网 发布:照片排版软件 编辑:程序博客网 时间:2024/06/05 16:33
基于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


 

原创粉丝点击