龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

在VC中使用智能指针操作Excel

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
最近的一个工程中,需要将数据导入Excel表格中,项目经理知道我以前没有接触过操作Excel的经验,于是给了一段小程序给我,让我参考着做。 这段程序是使用智能指针操作Excel,在网络

  最近的一个工程中,需要将数据导入Excel表格中,项目经理知道我以前没有接触过操作Excel的经验,于是给了一段小程序给我,让我参考着做。

  这段程序是使用智能指针操作Excel,在网络上找了一个星期,居然没有一片关于智能指针操作Excel的文章,只有Automation技术,而且所有介绍Automation技术的文章都是大同小异,并且代码多,说明少。没有任何帮助,光有一堆代码,对于理解和使用没有太大的帮助。在这样一个艰苦的条件下,我决定利用手中仅有的工具:Microsoft Excel Visual Basic 参考 和 Microsoft Visual Studio 2005的提示功能,摸索出一些利用智能指针操作Excel的心得,写出来,既是一次总结,也是一种分享,并且摸索还在继续,心得也还陆续会有。

  一、背景说明

  1.Microsoft Excel Visual Basic 参考是提供给VB程序员的一个操作Excel的帮助,帮助中的对象、集合、方法、常量都已经在COM中实现,在VC中可以找到对应的实体。

  2.既然是智能指针,那么绝大多数的操作都是“->”,然而,如果安装了Visual Assist X,使用“->”操作符的时候,是得不到任何提示的。这个时候,如果需要查看提示,则可以先使用“.”操作符,编译时再将“.”改成“->”。

  二、Excel概念介绍从MFC工程结构的角度来看,Excel属于多文档视图结构,一个应用程序包含若干个文档,称作工作簿,每个文档中包含若干个工作表。从智能指针对象模型来看可以做如下划分:

  1._ApplicationPtr :该对象即表示一个Excel应用程序。

  2. WorkbooksPtr :在一个_ApplicationPtr对象中,包含一个工作簿集合。

  3. _WorkbookPtr :在工作簿集合中包含若干的工作簿对象。一个工作簿对象对应一个xls文件。

  4. WorksheetsPtr :在一个工作簿对象中,包含一个工作表集合。

  5. _WorksheetPtr :在工作表集合中包含若干个工作表对象,工作表对象是操作Excel的基本单位。

  6. Range :这是一个集合,工作表中单元格的集合,控制对单元格的操作。

  三、准备工作1. 加载动态库。
#define OFFICEXP 1
#define OFFICE2000 2
// 如果使用OFFICE2000的内核,手动将此处改为#define OFFICE_VER OFFICE2000
#define OFFICE_VER OFFICEXP
#define USE_PROGID 1
#define USE_LIBID 0
#define _M2STR(x) #x
#define M2STR(x) _M2STR(x)
#ifndef MSDLL_PATH
      #if OFFICE_VER == OFFICEXP
        #define _MSDLL_PATH "C:Program FilesCommon FilesMicrosoft SharedOffice11MSO.DLL"
      #elif OFFICE_VER == OFFICE2000
        #define  _MSDLL_PATH "C:Program FilesMicrosoft OfficeOfficeMSO9.dll"
      #endif
#else
      #define _MSDLL_PATH M2STR(MSDLL_PATH)
#endif
#import _MSDLL_PATH rename("RGB", "MSRGB")
#ifdef VBE6EXT_PATH
      #import M2STR(VBE6EXT_PATH)
#else
      #import "C:Program FilesCommon FilesMicrosoft SharedVBAVBA6VBE6EXT.OLB"

精彩图集

赞助商链接