WEB开发网
开发学院软件开发VC 在VC中使用智能指针操作Excel 阅读

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

 2010-04-03 20:35:54 来源:WEB开发网   
核心提示:最近的一个工程中,需要将数据导入Excel表格中,在VC中使用智能指针操作Excel,项目经理知道我以前没有接触过操作Excel的经验,于是给了一段小程序给我,三、准备工作1. 加载动态库,#define OFFICEXP 1#define OFFICE2000 2// 如果使用OFFICE2000的内核,让我参考着做

最近的一个工程中,需要将数据导入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"
#endif
#if USE_PROGID
      #import "progid:Excel.Sheet" auto_search auto_rename rename_search_namespace("Office10")
#elif USE_LIBID
#import "libid:{00020813-0000-0000-C000-000000000046}" auto_search auto_rename version(1.3) lcid(0) no_search_namespace
#else
      #ifndef MSEXCEL_PATH
         #if OFFICE_VER == OFFICEXP
           #define  _MSEXCEL_PATH "C:Program FilesMicrosoft OfficeOffice11excel.exe"
         #elif OFFICE_VER == OFFICE2000
           #define  _MSEXCEL_PATH "C:Program FilesMicrosoft OfficeOfficeexcel.exe"
         #endif
      #else
         #define _MSEXCEL_PATH M2STR(MSEXCEL_PATH)
      #endif
      #import _MSEXCEL_PATH auto_search auto_rename dual_interfaces
#endif
using namespace Excel;

2.初始化COM组件。

CoInitialize(NULL);程序结束时记得释放资源CoUninitialize();

1 2  下一页

Tags:VC 使用 智能

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接