C++Builder 6中开发Office程序心得(一)
一、用控件还是用OLEAutomation? 这个问题应该说很常见。我也在任何可能的情况下坚持我的主张:用BCB 6提供的Server控件组。如果你是用Delphi 6/7版本开发,那么用Delphi提供的Server控件组。 这样做有什么好处?我个人认为至少有如下两个: 第一,维护结构化+OO的程序设计风格。例如:
又如:
这些代码都还是比较直观的。而且很具有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+! 这三个手段应该互相帮衬,才能在更短的时间内找到正确的方法。而且通过这三个途径找到的方法、参数应该是互相对应、互相一致的。例如,移动一个Sheet到另一个Sheet的Move方法,其在上述三个帮助途径中的定义分别如下: 在Excel的VBA宏里:Sheets("Sheet2").Move After:=Sheets(3) Excel的VBA帮助:见下图 BCB的Excel头文件: // *********************************************************************// |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |