[计算机]CB中利用Ole服务器生成Word试卷

上传人:油条 文档编号:33854725 上传时间:2018-02-18 格式:DOC 页数:5 大小:41KB
返回 下载 相关 举报
[计算机]CB中利用Ole服务器生成Word试卷_第1页
第1页 / 共5页
[计算机]CB中利用Ole服务器生成Word试卷_第2页
第2页 / 共5页
[计算机]CB中利用Ole服务器生成Word试卷_第3页
第3页 / 共5页
[计算机]CB中利用Ole服务器生成Word试卷_第4页
第4页 / 共5页
[计算机]CB中利用Ole服务器生成Word试卷_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《[计算机]CB中利用Ole服务器生成Word试卷》由会员分享,可在线阅读,更多相关《[计算机]CB中利用Ole服务器生成Word试卷(5页珍藏版)》请在金锄头文库上搜索。

1、4CB 中利用 Ole 服务器生成 Word 试卷 仅仅将考试所需试卷内容抽取到试卷表中是不够的,还必须将试卷表中的试题输出到 Word 文件中,才能完成后续的打印、复印等工作。因此如何将试卷表中的试题输出到 Word文件中是一个必须解决的问题,特别是当试题中既有文字也有试题插图时,这个问题就更加复杂化了。为解决该问题,我们采用了 OLE 技术,OLE 技术是微软提出的一种软件产品规范,是应用程序间交换数据、相互操作的标准。OLE 技术的实质是通过编程来控制其它的应用程序或者 DLL(动态链接库)中的对象。采用这一技术的应用程序不仅能使用驻留在自己程序中的对象,而且能使用驻留在系统里其它程序中

2、的对象,并能够访问这些对象的属性和方法。在 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.Exe

3、c(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(Pro

4、cedure(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; / 试卷路径及文件

5、名VwordBasic.Exec(Procedure(FileSaveAs) SaveFile); / 保存试卷5结束语 本试题库系统的程序开发已基本完成,正处于试用阶段,该系统除具备试题库管理、随机组卷及试卷生成等基本功能外,还实现了历史试卷的管理和系统设置功能,希望本系统的设计与实现能为开发类似试题库系统的人员在一定程度上起到借鉴作用。参考文献 1 邓又明,刘庆红,董光 . 试题库管理系统的分析与设计J. 现代情报,2005 年第 4 期,157-158任治斌,耿国华,张富春等. 在 VFP 下高等代数试题库的设计与实现J. 微计算机应用,第 26 卷第 5 期,2005 年 9 月,63

6、8-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 = Un

7、assigned; 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( Sub

8、script ,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 ,in

9、t 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.OleFuncti

10、on( 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 ).OleProp

11、ertyGet( 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

12、 = leng-1; vTemp00 = lstart; vTemp01 = lend; RangePtr subRange = wd- Range(1) 创建 OLE 对象。 Variant VwordApp,VwordBasic; VwordApp = CreateOleObject(Word.Application); / 创建 Word 应用程序对象 VwordBasic = CreateOleObject(Word.Basic); / 创建 Word VBScript 对象 (2) 新建 Word 文档并创建操作图形的 Shape 对象。 Variant Vshape; VwordB

13、asic.Exec(Procedure(FileNew)FieldByName(stnr)-AsString; / 取试题内容 VwordBasic.Exec(Procedure(Insert) 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); / 保存试卷

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

当前位置:首页 > 行业资料 > 其它行业文档

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