当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

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++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 用maven-jdocbook-plugin简单配置docbook5.0环境
  • 向Docbook5.0过渡系列(1)
  • 向Docbook5.0过渡系列(2)-给Image加链接
  • 用CB在WIN.INI中保存信息
  • 用BCB3.0制作桌面动画
  • <b>若何用BCB做出可移动的菜单</b>
  • <b>CB的Form最小化时无动画的缘由</b>
  • <b>如安在BCB中调试Active Form</b>
  • <b>CB编程中动态更改自定义打印纸张</b>
  • <b>用CB制作具有HTML气势的动态按钮</b>
  • <b>BCB中实现TRichEdit的自动格局化</b>
  • <b>通过预编译头文件来提高CB的编译速度</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .