实验技术报告Wordxx[C++ Builder 6.0基于OLE技术对Word 2000的调用]_第1页
实验技术报告Wordxx[C++ Builder 6.0基于OLE技术对Word 2000的调用]_第2页
实验技术报告Wordxx[C++ Builder 6.0基于OLE技术对Word 2000的调用]_第3页
实验技术报告Wordxx[C++ Builder 6.0基于OLE技术对Word 2000的调用]_第4页
实验技术报告Wordxx[C++ Builder 6.0基于OLE技术对Word 2000的调用]_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验技术报告Wordxx 基于技术对 的调用 摘要:采用可视化设计工具CBuilder开发基于C/S架构的自动组卷系统,既要利用C+ Builder强大方便的数据库开发功能,又要利用Word强大的数据处理能力。本文在CBuilder基于OLE技术对Word 2000的调用方面进行了一些有益的探索,可以较为便捷地实现试题库系统试题的导入和导出。 关键词:OLE;试题库;自动组卷系统;C+ builder;Word 2000 :TP311:A:1009-3044(xx)17-31661-02 Calling Word 2000 from C+ Builder Based on OLE Technology SHEN Hua (Embedded System Engineering Department, Neusoft Institute of Information, Dalian 116023, China) Abstract: The Auto-forming Test Paper System based on C/S architecture is developed with visual designing tool C+ Builder. Not only is the powerful data processing ability of C+ Builder used, but the powerful data processing ability of word is also used. Some useful studies of calling Word 2000 form C+ Builder based on OLE Technology have been done in this paper. It is convenient to import/export test questions from Test Question Data Base. Key words: OLE; Test Question Data Base; Auto-forming Test Paper System; C+ Builder; Word 2000 1 引言 C+ Builder 6.0是Inprise公司推出的基于C+语言的可视化开发环境,不仅具有新颖的可视化设计工具,还配有数据库引擎,可以通过SQL连接或ODBC访问多种数据库,并具有开发基于Client/Server模式的数据库应用程序的能力。当进行数据库软件开发时i,有时需要进行大量的文档或者严格的格式编排,CBuilder就会显得力不从心。而利用Word的强大的文档处理功能,可以解决C+ Builder 自带文本功能少的缺陷。 C+ Builder调用Word常用的方法有两种:一种是利用OLE技术调用Word。OLE(对象的连接和嵌入)是微软公司提出的标准,它提供了一种用源于不同应用程序的信息创建复合文档的强有力方法。第二种是利用ODBC数据库技术调用Word。第一种方法比较简单、方便,本文介绍的就是第一种方法。 2 自动组卷系统开发背景描述 随着办公自动化在教学中的应用推广,传统的命题方法既不能保证客观,又不利于资源的复用和共享。因此开发基于知识库和题库的自动组卷系统对于提高命题的客观率和知识的覆盖率具有明显的意义。自动组卷系统由前端的试卷管理系统和后台的知识数据库和试题数据库组成,管理员可以对后台数据库进行添加、删除、修改、查询等操作,试题输出由CBuilder调用Word进行文档的编排和打印。 传统的利用C+Builder进行报表设计和打印处理,往往是用C+Builder自己所提供的QReport组件页中的组件进行报表的设计和输出。但这样输出的报表都是事先设计好,并且不容易修改的表格,在系统移植后以及需要对表格进行修改时就显得非常麻烦。那么,有什么好的解决方法来实现既可以自动生成报表,同时又能够对生成的报表进行灵活地修改呢? 众所周知,Word能够很方便地对数据和报表进行修改和排版,如果能将C+ Builder中处理好的需要生成为报表的数据导入到Word中,那就可以解决试题信息的和排版问题了。为此,研究在C+Builder中基于OLE技术调用Word ,生成各种用户需要的报表就显得很有实际意义。 3 CBuilder中调用Word的方法及实例介绍 要在C+ Builder应用程序中控制Word 2000的运行,首先必须在编制户程序时在其头文件包含Comobj.hpp和Utilcls.h。 即:#include #include 另外,在C+Builder的组件面板中找到Office2K组件页,在这个组件页上可以看到如下组件: WordGlobal组件:对Word的最高级属性和方法进行调用。 WordApplication组件:Word应用程序组件,完成对Word应用程序的调用。是实现Word调用的核心组件。 WordDocument组件:Word文档处理组件,用于处理文档的具体内容。 WordFont组件:用于设置Word中的字体、字号等文字设置信息。 WordParagraphFormat组件:用于对Word中的段落格式进行处理WordLetterContent组件:对由信函向导创建的信函的元素进行调用的组件。 以上这些组件的具体应用方法参考下面这些实例: 3.1 CBuilder中应用程序和Word的连接 准备工作:在新项目的Form表单中添加一个WordApplication组件,将name属性改为WordApp。 范例代码如下: try WordApp-Connect();/与Word进行连接 WordApp-Documents-Add(); /建立一个新文档 WordApp-Documents-Item(Variant(1)-Range()-Text= WideString(这是第一个Word调用程序); /在文档中添加一段新文本WordApp-Visible=true; /显示Word catch(.) ShowMessage(连接Word失败!); WordApp-Disconnect(); 代码说明: (1)WordApp-Connect(); 这一条语句是将当前的应用程序和Word进行连接,如果连接失败可能是因为没有安装Word或Word发生错误。因此,可用 try. catch(.). 语句来对可能产生的错误进行处理。 (2) WordApp-Documents-Add(); 这条语句是在Word中建立一个新的文档,由于Word是一个多文档的处理程序,因此可以建立多个文档来进行操作,文档间又由Document下的Item函数来区分的。 (3) Range()函数是用来设置在文档中所操作文本的范围,如果Range()函数中没有任何参数,则表明在所有的范围内进行操作。 3.2 C+ Builder调用Word程序实现文档的 try WordApp-Connect();/连接Word WordApp-Documents-Add(); /建立一个新文档 WordDoc-ConnectTo(WordApp-Documents-Item(Variant(1); /将WordDocument对象与WordApplication对象进行连接 WordDoc-Paragraphs-Add();/添加一个段 WordDoc-Paragraphs-Item(Variant(1)-Range-Font-Name= WideString(黑体);/设置该段文本字体 WordDoc-Paragraphs-Item(Variant(1)-Range-Font-Size=20;/设置字号 WordDoc-Paragraphs-Item(Variant(1)-Range-Text= WideString(这是第一段文字!);/当前段文字 WordDoc-Paragraphs-Item(Variant(1)-Alignment=1; /设置该段文字居中WordDoc-Paragraphs-Add();/添加一个段 WordDoc-Paragraphs-Item(Variant(2)-Range-Font-Name= WideString(宋体); /设置该段文本字体 WordDoc-Paragraphs-Item(Variant(2)-Range-Font-Size=12;/设置字号 WordDoc-Paragraphs-Item(Variant(2)-Range-Text= WideString(这是第二段文字!); /当前段文字 WordDoc-Paragraphs-Item(Variant(2)-Alignment=0; /设置该段文字居左 WordDoc-Paragraphs-Add(); /添加一个段 WordDoc-Paragraphs-Item(Variant(3)-Range-Font-Name= WideString(宋体);/设置该段文本字体 WordDoc-Paragraphs-Item(Variant(3)-Range-Font-Size=10;/设置字号 WordDoc-Paragraphs-Item(Variant(3)-Range-Text=WideString(这是第三段文字!); /当前段文字 WordDoc-Paragraphs-Item(Variant(3)-Alignment=2; /设置该段文字居右 WordApp-Visible=true; catch(.) ShowMessage(您可能没有安装Word!); WordApp-Disconnect(); 代码说明: (1)在这段程序中使用了两个关于Word调用的组件,在WordDocument组件中运用ConnectTo函数与WordApplication相连接,通过这种连接就可以方便地使用WordDocument组件所提供的功能对Word的其中一个文档进行具体地操作,更加方便地控制与修改所产生的报表。 (2)在WordDocument组件的使用中,运用了Paragraphs来对Word中的段落进行操作,其中包括了段落中字体的设置和段落的排版式样等。 从这个实例可以看出C+Builder提供了一个非常方便的Word调用组件来实现Word的应用。 3.3 高级应用拓展 如果需要对段落中的其中一部分进行字体的设置那应该如何实现?从上面的程序中可以看到:对段落的字体进行设置的语句如下: WordDoc-Paragraphs-Item(Variant(2)-Range-Font-Size=12; 假如要设置段落中第5个字符为9号字,就需要限制字体设置的范围,程序代码如下: WordDoc-Paragraphs-Item(Variant(2)-Range-Select(); /将第二段文字选择上 WordApp-Selection-Start=WordApp-Selection-Start+5; /在选择的范围中的第5个字符作为选择的开始字符 WordApp-Selection-End=WordApp-Selection-Start+1; /将选择的结束字符设置为开始字符加1个字符 WordApp-Selection-Font-Size=16; /将最后选择的字符的字体设置为16号字 3.4C+Builder中调用Word绘制表格 WordDoc-Tables-Add(WordDoc-Range(EmptyParam,EmptyParam),4,8); /在Word中添加一个48的空白表格 WordDoc-Tables-Add(WordDoc- Range(Variant(WordDoc-Range(EmptyParam,EmptyParam)-End-1),EmptyParam),4,8); /在Word文档末尾添加一个48的空白表格 WordDoc-Tables-Item(Variant(1)- Cell(Variant(3),Variant(5)-Range-Text=WideString(添加的文本); /在第3行、第5列的这个单元格插入一段文本 WordDoc-Tables-Item(Variant(1)-Cell(Variant(3),Variant(5)- Marge(WordDoc-Tables-Item(Variant(1)-Cell(Variant(3),Variant(6); /将表格中(3,5)与(3,6)单元格合并 代码说明: (1)在C+Builder中调用Word绘制表格,可以通过调用WordDocument对象中的Tables来实现表格的绘制,Add函数是添加一个表格。 (2)Item中的值为指定需要进行操作的表格,Cell中的值为指定表格中的单元格位置。 4 结束语 以上所介绍的C+ Builder基于OLE技术对Word 2000的调用已应用于自动组卷系统中,经测试运行良好,使用方便,功能强大,既利用了C+ Builder 强大

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论