库管易

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

查看: 62311|回复: 20

使用C++开发Excel插件(1):前言与开发准备工作

[复制链接]
  提到Ms Office Excel相信谁都不陌生,但是你对微软的这个产品有多了解呢?大多数人平时只用它保存数据、绘制报表而已。但是你是否知道它的更深层次的功能呢,比如丰富的数学计算函数和强大的统计分析功能。我也是在大学上统计课时才接触到的它的统计功能,当时让我大为吃惊,Excel原来有这么强大的功能啊(也许是我从前对Excel太低估了吧)。虽然比起统计行业的老大哥SAS和SPSS,它的功能还有些欠缺,但是从操作方便程度,扩展等方面来看是老大哥们望尘莫及的。我在这里不是吹捧Excel而是强调一下它的功能。
  也许你会说根本不会用到那些复杂的功能,不过回想一下你曾经使用Excel的经历,试想如果在使用中使用那些统计功能会让你有另一番感觉。哦,说了半天还没提到写本文的主要目的呢,我可不是要介绍Excel的功能的,本文的目的是如何让Excel那么强大的功能为我们日常工作服务。纵观Excel的那些功能,虽然强大,但全部都是最基本的功能,并没有针对某一方面,这应该是和它面向所有office用户的有关吧。如果我们把那些基本功能综合起来,不就成了一个非常强大的系统吗。
  本文的目的就是介绍如何用C++程序扩展Excel的功能,或者如何在Excel的基础上创建合适某一方面的系统。比如利用Excel的金融分析和统计功能就可以开发出完善的金融系统。事实确实如此,许多金融公司都是在Excel上开发金融分析软件的。

  也许你会问,为什么不用VBA开发插件呢,方便又快捷?我并不反对用VBA开发,而是用c++开发的好处在于开发出来的程序执行效率高,而且可以有效地保护作者利益。VBA是一种解释语言,而c++则是编译语言,如果只是开发几个小功能的话,使用VBA可以很快地搞定,但是如果要开发的是要进入市场销售的产品的话,那就得三思了。不仅执行效率难以保证,而且很容易被别人窃取到代码,即使是加密的,也只是几秒钟的问题。我曾见过有人在Excel中写了许多宏,结果他每次启动Excel工作时都要等上半天。我也曾试着破解过一个比较有名的商业性Excel插件,几秒钟时间就把程序中的所有程序文件都打开了,几万行的VBA代码包括注释,一目了然。这如果是落在竞争对手那里那它不就全白费了。写此书前也是在论坛常看到一些人问如何保护他们所写的VBA代码。正好我也要开发一个Excel的商业插件,此间多方查阅资料,学到了不少知识,就把这些介绍给大家共同分享。
  读者对象:
  本文主要是面向所有想要Excel更好的为自己或其他人服务的开发人员,阅读此书的人只需懂一些C++基础,和VC++编译环境就可以了。

  开发准备:
  我们目前最常见的几个Excel的版本是Excel 97/2000/2002/2003/2007,本书提到的所有例子都是在Excel2003环境中的。它们虽然版本不同但是大多数接口并没什么区别。而且我们使用的是Excel的开发包,所以只要开发包不变。当然我们这里所有的版本都是指在32-bit的。Excel的开发包可以从微软网站上下载到。下载http://download.microsoft.com/download/platformsdk/sample27/1/NT4/EN-US/Frmwrk32.exe这个文件到本地,它里面包含了将要用到的xlcall.h和xlcall32.lib文件。Xlcall.h中包含了全部的Excel中的数据结构类型和C API函数的定义,关于如何使用它们,你可以参考Macrofun.hlp,它里面包含了全部的api函数的描述,在后面的章节中我们会重点的讲到一些常用的API函数,。下载地址http://download.microsoft.com/download/Excel97win/utility4/1/WIN98/EN-US/Macrofun.exe

  认识Excel插件(add-ins)
  其实插件在Excel中叫做加载宏,是一类程序,它们可以为Excel添加命令扩展其功能。你可以把工作薄保存为加载宏,只需在保存时选择.xla文件格式即可。加载宏业可以用C/C++编写,只要在加入一些和Excel衔接的接口就可以在Excel中调用了,通常其文件的扩展名为.xll。Excel中也包含一些常用加载宏,在安装时默认安装到Microsoft Office/Office文件夹中的Library文件夹或Addins文件夹。默认这些宏并没有全都加载,你可以通过点击菜单“工具/加载宏”,在弹出的“加载宏”对话框中选中你要加载的宏。主要包含以下几种功能的加载宏:
  
加载宏文件名说明
分析工具库ANALYS32.XLL添加金融、统计及工程分析工具和函数。
分析数据库-VBA函数ATPVBAEN.XLA允许开发人员用“分析工具库”的语法发布金融、统计及工程分析工具和函数。
条件求和向导SUMIF.XLA创建公式,对区域中满足指定条件的数据进行求和计算。
欧元转换工具EUROTOOL.XLA将数值的格式设置为欧元格式,并提供EUROCONVERT工作表函数用于转换货币。
Internet Assistant VBAHTML.XLA开发者可用Internet Assistant语法,将Excel数据发布到网站上。
查阅向导LOOKUP.XLA创建一个公式,通过区域中的已知值在区域中查找数据。
“规划求解”加载宏SOLVER.XLA对基于可变单元格和条件单元格的假设分析方案进行求解计算。
  Excel中有三种加载宏程序:Excel加载宏,自定义的com加载宏和自动化加载宏。在功能上它们都可以实现你想要的功能,只是在开发方法有些不同。
  
 Excel加载宏自定义的com加载宏自动加载宏
文件扩展名.xla或xll.exe或.dll.exe、.dll或.ocx
开发工具VC++或VBAVC++或VBVC++或VB
在Excel中的操作位置工具/加载宏工具/Com加载项工具/加载宏/自动化
开发难易程度容易困难困难
  VBA(Visual Basic Application)是Visual Basic的一个宏语言版本,主要用于扩展Ms Office的功能,你可以在菜单“工具/宏/Visual Basic编辑器”打开VBA编辑器,并可以直接编写操作office的代码,其语法和Visual Basic基本一样,而且也继承了VB的简单易用的特性。如图1
  

635344653163300781.jpg

635344653163300781.jpg

  图1
  Excel加载宏是我们这本书主要介绍的对象,在以后的内容中我们会重点介绍它。自定义Com加载宏和自动化加载宏相对复杂一些,暂不作详细介绍。

评分

参与人数 1金钱 +49 收起 理由
老爷 + 49

查看全部评分

回复

使用道具 举报

竟然没有人顶,不科学啊
回复 支持 反对

使用道具 举报

这个应该顶的
回复 支持 反对

使用道具 举报

好东西!看起来挺复杂呀!谢谢楼主分享 {:soso_e179:}
回复 支持 反对

使用道具 举报

谢谢楼主分享
回复 支持 反对

使用道具 举报

好文
回复

使用道具 举报

仓库里没电脑,只能用手工了
回复 支持 反对

使用道具 举报

我看来是老了!!这个学不会了!!哎!!
回复 支持 反对

使用道具 举报

呜呜,C语言没学,当时学的是文秘专业,不会编程,可怜啊
回复 支持 反对

使用道具 举报


谢谢楼主分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|仓库管理网

GMT+8, 2024-4-19 17:59

Powered by 库管易

KuGuanYi.Com

快速回复 返回顶部 返回列表