C++Builder 6中开辟Office程序心得(一)[VC/C++编程]
本文“C++Builder 6中开辟Office程序心得(一)[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
1、用控件还是用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控件就不会有这个问题——编译期就不能通过.可以在编译期发现并改正的错误,不要留到运行期去办理.这是我的主张.
2、必要的帮助手段
利用BCB编写掌握Excel的程序,是很烦琐的.因为有时编译通过后会呈现难以琢磨的非常!又有一种很无助的感受:BCB在这上面的帮忙简直是BS.CodeInsight的速度又是相当的慢,无法忍耐!
不过,我们不要简单放弃.按照我的经验,在BCB下要想好好掌握Excel编程,必须掌握三个得到帮忙的途径.这三个得到帮忙的途径就是(以我个人爱好的程度降序布列):
Excel本身的宏号令.我目前的习惯是,假如我要在BCB中实现一个功效,但是却不知道呼应的办法和参数,我就会翻开Excel,在随便一个Sheet顶用宏记录下我要举行的操作,然后研究宏代码.这样做,必定能得到精确的办法名,但是对参数的数目和范例却不敢保证:这是因为VBA可以挑选不PASS一些缺省参数.按照我的个人经验,这样做的有效性应当在80%左右,简易性在100%.
Office自带的VBA帮忙.这个帮忙在Office安装历程中普通不是缺省安装的.关于Office 2003中文版的用户,应当查抄C:Program FilesMicrosoft OfficeOFFICE112052下能否有近似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 FilesBorlandCBuilder6IncludeVcl下.我这里只截一张图.从这张图中,我们也可以看到,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头文件:
// *********************************************************************//
// Interface: IWorksheets
// Flags: (4112) Hidden Dispatchable
// GUID: {000208B1-0001-0000-C000-000000000046}
// *********************************************************************//
interface IWorksheets : public IDispatch
{
public:
... ...
HRESULT STDMETHODCALLTYPE Copy(VARIANT Before/*[in,opt]*/= TNoParam(),
VARIANT After/*[in,opt]*/= TNoParam(),
... ...
HRESULT STDMETHODCALLTYPE Move(VARIANT Before/*[in,opt]*/= TNoParam(),
VARIANT After/*[in,opt]*/= TNoParam(),
long lcid/*[in]*/= TDefLCID()); // [637]
... ...
以上是“C++Builder 6中开辟Office程序心得(一)[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |