VC之Office自动化开发

上传人:新** 文档编号:493168145 上传时间:2023-11-28 格式:DOC 页数:9 大小:35.50KB
返回 下载 相关 举报
VC之Office自动化开发_第1页
第1页 / 共9页
VC之Office自动化开发_第2页
第2页 / 共9页
VC之Office自动化开发_第3页
第3页 / 共9页
VC之Office自动化开发_第4页
第4页 / 共9页
VC之Office自动化开发_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《VC之Office自动化开发》由会员分享,可在线阅读,更多相关《VC之Office自动化开发(9页珍藏版)》请在金锄头文库上搜索。

1、V之Offe自动化开发去年底老板临时交给一个任务,为一个试验数据管理系统编写一个电子报告生成程序。因为老板也不怎么重视这个项目(钱少啊,呵呵),所以这个任务只好落在我这种小硕身上了。我也是两眼瞎,万事从头干。三个月的苦斗,还算圆满交差。用V进行off自动化开发,网上有很多文章,我本不想在此画蛇添足。只是感于自己查资料时的苦痛,所以就厚着脸皮把一些心得拿出来见见阳光,有一些技术还是自己摸索出来的。最后,offic自动化开发与我专业无丁点关系,希望此文不至于太班门弄斧让你看得难堪,如果尚有所帮助,那真是不胜荣幸(本文只涉及如何解决问题,没有原理,所以,Dot sk m why)1 前话本文中,只讲

2、述如何使用VC+(就是MFC)进行WOD、EXCE自动化开发.有几个问题先交待于此.() offie开发之V与VB实现之比较。事实上,C实在不适合进行oice自动化开发.相对VB而言,C+是一种强调类型的语言,这使得在实际编程时通常搞得你非常烦躁,不停地返回一些毫无意义的对象或指针(鸡肋啊!),而且整个程序会显得非常冗长.V这种属性化的编程语言则非常适于自动化开发。(2)offic版本。在你提交帮助文档的时候,一定要说明你是针对哪个offce版本开发的,否则不同的offic版本可能会导致程序无法正常运行,因为不同版本的ofice提供的接口函数可能是不同的(特别是使用VC开发这个问题就比较明显,

3、不知V是否有同样的问题).本文中所述的是ofce0003版本。()两个重要的学习来源。初学ofce开发,两个不可忽视的学习来源是:ord本身的VA宏代码和微软官方网站。录制的VBA宏代码可以给我们提供非常有用的思路,而且通过调试可以获得很多所需的参数值(因为MFC通常并不支持很多VBA宏)。微软官方网提供了许多非常实用的技术文献(本文涉及的一些技术就来自于MSDN),如果英文基础还可以的话,建议到英文MN上去看看,那里的资料要比中国MSD多。()由于所有权的一些问题,所以不能提供源代码,也许会给阅读带来一些不便,这点希望谅解(而且那代码确实太臭,被我们的大师兄客气地批评得体无完肤,也就不敢拿出

4、来献丑了)2 自动化技术简述自动化(以前称为 OLE 自动化)是一种允许您利用现有程序的功能并将其合并到您自己的应用程序中的技术。自动化是建立在组件对象模型 (CM)的基础上。Iipach是自动化技术的核心。VAIANT是另一个重要的概念。VAIAT结构是一个通用的数据类型,Dipach利用它来传递参数和返回值.MFC小组创建了一个Ceariat类将VAN结构包装起来,并被很好地用于自动化客户和组件。需要注意的是ClVarin通常只支持short, long,lot等数字类型,不支持int类型,使用时请注意强制转换。关于OlVarin类的更多信息可以参看MSDN。关于COM技术和自动化技术更多

5、信息请参看一些公开出版的书籍及微软官方网站资料.另外提前交待的是:(1)在进行自动化开发前,必须首先初始化COM库。通常一种便利的方法是在应用程序类的InitInstce()函数里添加以下语句:if(!AfxeInit()) AfxessageBox(”LE Initazaton Failed); retur FALSE; (2)在自动化开发中,微软还提供了一个方便的COeiant类型的数值,COVariat(lo)DISE_PARAMNOFOUND,VT_RROR)。通常,如果我们不清楚参数含义,均可用此值进行代替,系统会自动选择默认值传递给参数.以下行文中,我们以VarOpt代替这个Ole

6、Vrian对象.1or组件对象模型 Micosft OieWord 003 对象是按层次顺序排列的,层次结构顶端的两个主类是 Appliation类和 Doument类。这两个类非常重要,因为在大部分时间里,您要么是在使用 Wor应用程序本身,要么是以某种方式处理Wr 文档.Wo 对象模型严格遵循用户界面。pplitio 对象提供整个应用程序的包装,每个 oumet 对象表示单个 Wd文档.这些对象各自都有很多方法和属性,您可以使用这些方法和属性操作对象或与对象交互。pliaton 对象。Application对象表示Word应用程序,是其他所有对象的父级。它的所有成员通常作为一个整体应用于

7、Wod。可以使用该对象的属性和方法来控制Word 环境.Docuet对象。Docment对象是 r 编程的中枢。当您打开文档或创建新文档时,就创建了新的 oumnt 对象,该对象被添加到ord 的Documnts 集合中。焦点所在的文档叫做活动文档,由 Applicain 对象的 ActiveDocmt 属性表示。Seetin 对象。Selctio 对象表示当前选择的区域,Sctin对象只存在一个。在 r 用户界面中执行某项操作(例如,对文本进行加粗)时,应首先选择或突出显示文本,然后应用格式设置。Slecti 对象始终存在于文档中。如果未选中任何对象,它表示插入点。此外,该对象还可以表示多个

8、不连续的文本块.ang 对象。Rane 对象表示文档中的一个连续的区域,由一个起始字符位置和一个结束字符位置定义。Rage 对象的数量并不局限于一个。您可以在同一文档中定义多个e 对象。Bokmar 对象.Bokark 对象与 Range 对象类似,它也表示文档中的一个连续区域,并具有一个起始位置和一个结束位置。书签用于在文档中标记一个位置,或者用作文档中的文本容器.Boomark对象可以小到只有一个插入点,也可以大到整篇文档。您还可以在文档中定义多个书签。对于MicosoftOffice Wrd2,通常可以在Microft OffceFCE1 MSWOD.L获得相关接口类.常用的有_Apli

9、caon,Dcumes, _Dcuet,Seecton, Rane等。此外,用于设置字体的_Font,段落格式的_ParagraphFoa,表格对象Tabs及able,目录对象TabesOfContents及ableOfContens等等也是常用的。Word启动与退出使用Aplcatn 对象,关联接口、释放接口。具体代码如下:Applicaton heExclAp;theExelAp.CreateDiptch(wordapplication,NU); /关联接口/退出theExcelp。Quit(); /退出thexclAp.ReleaseDpatch(); /释放接口3 ord表格操作 使用

10、单文档对象Document,表格集合对象Table,表格对象Table,行对象Rows,单元格对象Cell,列集合对象Comn,列对象Colun,区域对象ange等可对表格进行操作。插入表格。使用Document:: GetTables返回一个Tables对象,使用Tables:A在指定区域插入一个表格。获取列对象.使用Tabl:tColns返回一个Coums对象,使用Coumn: tem返回一个Colu对象。从而可以列为对象进行操作。单元格插入文字。使用abl:: Cell返回Cell对象,使用Cell: eRnge返回区域对象,或者使用Cl::Select使得表格获得输入焦点,从而进行编辑

11、。4 文字转换为表格 当需要把一个记事本(txt)文件转换为表格插入到Wd文档中。最快捷的作法是将tt内容粘贴到word文档中,然后将内容转化为表格.步骤如下:首先确定一个插入txt内容的Range对象。使用Rae::IsetFile函数。IneFil函数声明为: void ne:nser , ARIANT* Range, VAIANT* CofrmCnversios,VARIANT*ink, ARIAN Aamnt)参数说明如下: 插入文本路径。Rnge 插入文本内容的age对象,设为NULLConimCversis 确认转换,设为FALLin 链接到文件,设为FLSacment链接行为,设

12、为FALSE使用Rage: oertToTable转换文字为表格,返回一个ae对象。onvetToTable函数声明为:LISPATCH Rane:onveToTable(VARIANT Sepratr, ARIN*uRows, ARIANT*NumCumn,VRANT*IniialCoumnWith, VARA Foat,RIAApplyBordes, AIT*pyShding, VARIAT* ApplyFont,VAAT AppyClor, AIANT* AppyHeaingRos, VARIANT* pplastRow, VAIANT AppyFistClun, VARANT Appy

13、Lstolumn,VARINT*AutoFi, VARANT*, VARINT DeultableBehavior)参数说明如下:eaato 分隔符。通常设为1,即设置制表符为分隔符(如果采用其他分隔符,请适当修改)NumRows表格行数目NmClmns 列数目niialCoumnith,ormat,Applyorders,AppyShadin,AppFn,AppyColor,AplyBorders,AlyFirstColm,pyastColu,DefultTaleBehavior,均可设为arpt,由系统默认Autit 自动调整。设为0也可利用Section对象代替Range对象进行文本转换

14、表格,调用函数与ane对象的函数名称一致,参数略有出入。5 设置页码 通常我们需要在任意指定页开始插入新页码.网上很多文章都是只能在第二页开始设置。以下介绍我通过观察VA宏代码得到的一种插入页码的方法(实现方法当然可能不止一种,我曾在网上看到曾有一篇文章提及这个问题,但是他的代码不能正常运行,估计是作者发布文章的时候有些不小心有遗漏)。要点在于插入分节符和取消,并且要注意返回当前节。步骤如下:0 在前一页使用Sectio::nsrBreak插入分节符,参数值为2(参数值为分页符)。1 使用_Duent:GeActiveWnd返回窗口indow对象。2 使用indw: GtActvPe返回当前活动ane窗格对象3 使用Pane::tView返回View视图对象,Vew::StTyp(long()).4使用SetSeeView(log(1))获得页眉页脚视图。5 使用Selectio::GtHeadeo

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号