快速业务通道

C++Builder 6中开发Office程序心得(一)

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29

一、用控件还是用OLEAutomation?

这个问题应该说很常见。我也在任何可能的情况下坚持我的主张:用BCB 6提供的Server控件组。如果你是用Delphi 6/7版本开发,那么用Delphi提供的Server控件组。

这样做有什么好处?我个人认为至少有如下两个:

第一,维护结构化+OO的程序设计风格。例如:

ExcelApplication1->set_DisplayAlerts(0,false);
ExcelApplication1->Quit();

又如:

int SheetCount=ExcelWorkbook1->Worksheets->Count;

这些代码都还是比较直观的。而且很具有OO的美感。

第二,强类型检查胜于弱类型检查。

如果使用OleGetProperty或者OleSetProperty函数,那么对传递给这两个函数的参数,是没有办法控制的。例如,我完全可以随心设置一个单元格的属性FOO为100。但是这样的函数调用在运行期一定会出错。而使用Server控件就不会有这个问题——编译期就不能通过。可以在编译期发现并纠正的错误,不要留到运行期去解决。这是我的主张。

二、必要的辅助手段

使用BCB编写控制Excel的程序,是很繁琐的。因为有时编译通过后会出现难以琢磨的异常!又有一种很无助的感觉:BCB在这上面的帮助简直是BS。CodeInsight的速度又是相当的慢,无法忍受!

不过,我们不要轻易放弃。根据我的经验,在BCB下要想好好掌握Excel编程,必须掌握三个获得帮助的途径。这三个获得帮助的途径就是(以我个人喜好的程度降序排列):

Excel本身的宏命令。我现在的习惯是,如果我要在BCB中实现一个功能,但是却不知道相应的方法和参数,我就会打开Excel,在随便一个Sheet中用宏记录下我要进行的操作,然后研究宏代码。这样做,肯定能获得正确的方法名,但是对参数的数量和类型却不敢保证:这是因为VBA可以选择不PASS一些缺省参数。根据我的个人经验,这样做的有效性应该在80%左右,简易性在100%。

Office自带的VBA帮助。这个帮助在Office安装过程中一般不是缺省安装的。对于Office 2003中文版的用户,应该检查C:\Program Files\Microsoft Office\OFFICE11\2052\下是否有类似VBAxxnn.chm文件。其中xx应该是如下字符串之一:AC(Access),GR(Microsoft Graphics),OF(Office),OL(Outlook),OWS(Office Web Service),PB(Publisher),PP(PowerPoint),WD(Word),XL(Excel)。而nn是对应的Office应用的版本号。如果没有这些文件,请运行Office安装程序,在自定义安装中将这些文件安装即可。这些文件,对于我们理解Office应用中的DOM模型是非常有用的。其有效性为85%,简易性约为80%。

BCB6中关于Server的头文件。这些头文件的位置应该是在:C:\Program Files\Borland\CBuilder6\Include\Vcl\下。我这里只截一张图。从这张图中,我们也可以看到,BCB6对Office的支持只到Office 2000。Delphi 7可以支持到Office XP。不过它们都能很好的在Office 2003下工作。自Delphi 8之后,我们应该用Interop来操作Office了。这个方法的有效性是100%——因为你一定可以在里面找到BCB支持的方法,但是简易性只有10%——因为这些头文件都相当的大:excel_2k.h的大小是8M+!

C++Builder 6中开发Office程序心得(一)

这三个手段应该互相帮衬,才能在更短的时间内找到正确的方法。而且通过这三个途径找到的方法、参数应该是互相对应、互相一致的。例如,移动一个Sheet到另一个Sheet的Move方法,其在上述三个帮助途径中的定义分别如下:

在Excel的VBA宏里:Sheets("Sheet2").Move After:=Sheets(3)

Excel的VBA帮助:见下图

C++Builder 6中开发Office程序心得(一)

BCB的Excel头文件:

// *********************************************************************//
// Interface: IWorksheets
// Flags: (4112) Hidden Dispatchable
// GUID: {000208B1-0001-0000-C000-000000000046}
/

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号