在VC中彻底玩转Excel
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
-----------------------------------精品考试资料---------------------学资学习网-----------------------------------
[原创]在VC中彻底玩转Excel
如今Excel是越来越重要了,在我们自己开发的程序中不免要和Excel打交道了。利用Automation技术,我们可以在不去了解数据库的情况下玩转Excel,而且你会发现一切竟如此轻松!好了,咱们开始吧,我不喜欢用长篇累牍的代码来故弄玄虚,所以下面的代码都是切中要害的片段,总体上是个连贯的过程,包括启动Excel,读取数据,写入数据,以及最后的关闭Excel,其中还包括了很多人感兴趣的合并单元格的处理。
特别说明以下代码需要MFC的支持,而且工程中还要包含EXCEL2000的定义文件:EXCEL9.H,EXCEL9.CPP
VC6.0操作Excel
( 2008-1-22 11:26 )
1.建立一个空的单文档程序;
2.加入Excel的库文件:
在vc++的view菜单里面选classwizard,然后选Automation tab,再选Add Class,选?潲??祴数氠扩慲祲尮,然后再选你需要的object library。
(for this example, if you are automating Excel 97, choose the Microsoft Excel 8.0
Object Library; the defaultlocation is C:\Program
Files\Microsoft
Office\Office\Excel8.olb).
If you are automating Microsoft Excel 2000, choose Microsoft Excel 9.0 Object
Library for which the defaultlocation is the C:\Program
Files\Microsoft
Office\Office\Excel9.olb.
If you are automating Microsoft Excel 2002 and Microsoft Office Excel 2003, the
object library is embedded inthe file Excel.exe. The default location for Excel.exe in
Office 2002 is C:\program
Files\MicrosoftOffice\Office10\Excel.exe. The default
location for Excel.exe in Office 2003 is C:\program
Files\MicrosoftOffice\Office11\Excel.exe.
1 / 31
在ListCtrl框中选中_Application, _Workbook, _Worksheet, Range, Sheets,
Workbooks,单击OK,自动生成EXCEL8.H和EXCEL8.CPP文件(或者EXCEL9.H和EXCEL9.CPP或者EXCEL.H和EXCEL.CPP)。
3.初始化COM库:
在App类的InitInstance中一定要先加上AfxOleInit();因为操作Excel是属于COM自动化,需初始化COM库。
4.加入Excel的头文件:
文档类的CPP文件中包含头文件椣据畬敤尠硥散?栮,是关于Excel中各类的接口定义信息。
如果excel9.h, excel9.cpp文件已经生成
创建project,将示例文档中的excel9.h, excel9.cpp
复制到工程目录,选
Project-->Add to project-->File-->excel9.h;
Project-->Add to project-->File-->excel9.cpp;
在App的Initinstance中加入AfxOleInit();
在Dlg的头文件中加入#include excel9.h
代码中加入调用COM接口代码,编译即可,
**************************************************** **************************************************** *********
//*****
//变量定义
_Application app;
Workbooks books;
2 / 31
_Workbook book;
Worksheets sheets;
_Worksheet sheet;
Range range;
Range iCell;
LPDISPATCH lpDisp;
COleVariant vResult;
COleVariant
covTrue((short)TRUE),
covFalse((short)FALSE),
covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); //*****
//初始化COM的动态连接库
if(!AfxOleInit())
{
晁?獥慳敧潂?无法初始化COM的动态连接库!);
return ;
}
//*****
//创建Excel 2000服务器(启动Excel)
if(!app.CreateDispatch(Excel.Application))