一、用控件还是用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%。
版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!