[计算机]CB中利用Ole服务器生成Word试卷.doc_第1页
[计算机]CB中利用Ole服务器生成Word试卷.doc_第2页
[计算机]CB中利用Ole服务器生成Word试卷.doc_第3页
[计算机]CB中利用Ole服务器生成Word试卷.doc_第4页
[计算机]CB中利用Ole服务器生成Word试卷.doc_第5页
全文预览已结束

下载本文档

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

文档简介

4CB中利用Ole服务器生成Word试卷 仅仅将考试所需试卷内容抽取到试卷表中是不够的,还必须将试卷表中的试题输出到Word文件中,才能完成后续的打印、复印等工作。因此如何将试卷表中的试题输出到Word文件中是一个必须解决的问题,特别是当试题中既有文字也有试题插图时,这个问题就更加复杂化了。为解决该问题,我们采用了OLE技术,OLE技术是微软提出的一种软件产品规范,是应用程序间交换数据、相互操作的标准。OLE技术的实质是通过编程来控制其它的应用程序或者DLL(动态链接库)中的对象。采用这一技术的应用程序不仅能使用驻留在自己程序中的对象,而且能使用驻留在系统里其它程序中的对象,并能够访问这些对象的属性和方法。在CB中使用OLE技术嵌入并控制Word是扩充系统文字处理功能最简洁、高效的途径,其关键步骤 (1) 创建OLE对象。Variant VwordApp,VwordBasic;VwordApp = CreateOleObject(Word.Application); / 创建Word应用程序对象VwordBasic = CreateOleObject(Word.Basic); / 创建Word VBScript对象 (2) 新建Word文档并创建操作图形的Shape对象。Variant Vshape;VwordBasic.Exec(Procedure(FileNew)Normal); / 用模板新建Word文档Vshape = VwordApp.OlePropertyGet(ActiveDocument). OlePropertyGet(Shapes); (3) 将试题内容与试题插图写入Word文档中,以试题表中一条记录为例。AnsiString SaveImage = GetCurrentDir()+“image.bmp; / 暂存图像路径及文件名AnsiString Stnr = ADOQueryA-FieldByName(stnr)-AsString; / 取试题内容VwordBasic.Exec(Procedure(Insert) Stnr); / 向Word文档中写试题内容blob=(TBlobField *)ADOQueryB-FieldByName(image); / 取试题插图if(!blob-IsNull) / 判断该试题是否有插图 blob-SaveToFile(SaveImage.c_str(); / 暂存为图像文件 Vshape.OleFunction(AddPicture,SaveImage.c_str(); /将图像插入Word文档 (4) 保存试卷。AnsiString SaveFile = GetCurrentDir()+“Test_A.doc; / 试卷路径及文件名VwordBasic.Exec(Procedure(FileSaveAs) SaveFile); / 保存试卷5结束语 本试题库系统的程序开发已基本完成,正处于试用阶段,该系统除具备试题库管理、随机组卷及试卷生成等基本功能外,还实现了历史试卷的管理和系统设置功能,希望本系统的设计与实现能为开发类似试题库系统的人员在一定程度上起到借鉴作用。参考文献 1 邓又明,刘庆红,董光. 试题库管理系统的分析与设计J. 现代情报,2005年第4期,157-158任治斌,耿国华,张富春等. 在VFP下高等代数试题库的设计与实现J. 微计算机应用,第26卷第5期,2005年9月,638-640刘光. C+Builder数据库系统设计与开发M,清华大学出版社,2003.8陈周造,陈灿煌. 精通C+Builder 5程序设计高级教程M. 中国青年出版社,2001.2我在往WORD里面送文字图片无可以实现了.但现在是送文字的上标.在一般的地方可以 如下列代码 try vWordApp = Variant:CreateObject( Word.Application ); catch(.) MessageBox(0, 启动 Word 出错, 可能是没有安装Word. , Print2Doc , MB_OK | MB_ICONERROR); vWordApp = Unassigned; return; / 隐藏/显示Word界面 vWordApp.OlePropertySet( Visible ,true); / 新建一个文档,从模板中 vWordApp.OlePropertyGet( Documents ).OleFunction( Add , d:证书.dot ); Variant vSelect = vWordApp.OlePropertyGet( Selection ); vSelect.OleFunction( TypeText , U ); vSelect.OlePropertyGet( Font ).OlePropertySet( Subscript ,true); vSelect.OleFunction( TypeText , rel ); vSelect.OlePropertyGet( Font ).OlePropertySet( Subscript ,false); vSelect.OleFunction( TypeText , =0.28% ); 效果 rel =0.28% 这样子没有问题.但现在是我往表中的一个CELL里面放.如何控制,可以写进去.但上下标? void _fastcall TForm1:InsertTableCellText(Variant &vTable, int nTableIndex ,int nCellx,int nCelly,String abc) vTable= vWordApp.OlePropertyGet( ActiveDocument ).OlePropertyGet( Tables ).OleFunction( item ,nTableIndex); vTable.OleFunction( Cell ,nCellx,nCelly).OlePropertyGet( Range ).OlePropertyGet( Font ).OlePropertySet( Superscript ,true); /这样一来,表中的所有字体全变了上标了 vTable.OleFunction( Cell ,nCellx,nCelly).OlePropertyGet( Range ).OlePropertySet( text ,abc.c_str(); /写入字符 vTable.OleFunction( Cell ,nCellx,nCelly).OlePropertyGet( Range ).OleFunction( InsertAfter , ,在刚才字符基础上再追加字符 ); 如何在表格中实现以上效果呢 效果 rel =0.28% vTable.OleFunction( Cell ,nCellx,nCelly).OlePropertyGet( Range ).OlePropertyGet( Font ).OlePropertySet( Superscript ,true); /这样一来,表中的所有字体全变了上标了 因为你指定的就是整个CELL,你应该把Range指定为你需要设置为下标的内容!To:LuoGD(抢第一楼) 你说的很对,但如何操作呢请指教.另我想这样子实现上下标,在我们的程序中 如在一个串中 CO 2 二氧化炭 200M 2 200平方米 但如果串中有上下标的程序如何分解呢TVariant vTemp00,vTemp01; long lend = tbl- Cell(rows,2)- Range- get_End(); long lstart = leng-1; vTemp00 = lstart; vTemp01 = lend; RangePtr subRange = wd- Range(&vTemp00, &vTemp01);(1) 创建OLE对象。 Variant VwordApp,VwordBasic; VwordApp = CreateOleObject(Word.Application); / 创建Word应用程序对象 VwordBasic = CreateOleObject(Word.Basic); / 创建Word VBScript对象 (2) 新建Word文档并创建操作图形的Shape对象。 Variant Vshape; VwordBasic.Exec(Procedure(FileNew)FieldByName(stnr)-AsString; / 取试题内容 VwordBasic.Exec(Procedure(Insert) FieldByName(image); / 取试题插图 if(!blob-IsNull) / 判断该试题是否有插图 blob-SaveToFile(SaveImage.c_str(); /

温馨提示

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

评论

0/150

提交评论