选择题库中的试题动态生成试卷(word格式)
来源:互联网 发布:帝国cms自动加alt 编辑:程序博客网 时间:2024/06/06 05:55
相信做教育系统的公司都会有这个需求,对于试题的管理最终还是要生成试卷的,怎么生成试卷呢?html当然可以在页面里拼成一个试卷了,不过html页面排版是这个问题,打印出来的效果自然不行;还有一个更重要的原因是如果生成的试卷是html格式的,那么复杂点的试题保存就是个问题。比方说有一个选择题的四个选项是四个不同的图片,又比如试题中有复杂的公式,这样的题用数据库字段去保存的话,确实是个大问题了,毕竟数据库字段只能保存字符串或二进制流嘛。
用word保存各个试题怎么样呢?一个word文件保存一个试题的话,不管是公式还是图片反正都保存到一个文件中肯定是没有问题的,问题是如果生成试卷的时候把多个试题合并到一个word文件中能不能做到,用什么技术可以做到?这里用了一个第三方的文档中间件产品soaoffice,有两个方法都可以,ApplyTemplateFromURL和InsertDocumentFromURL,前者是soaoffice给套红需求设计的,所以插入一个word文件的话,直接就把word文件插入到整个文件的最前面了;后者是插入一个word文件到当前光标处,这里使用后者InsertDocumentFromURL来实现试题文件的合并生成试卷。
思路:给教师一个选择试题的界面,选择需要使用的试题以后点“生成试卷”按钮就打开一个空白的word文件,然后用程序对应的生成多条InsertDocumentFromURL命令(就是js代码),文档打开的时候自动调用InsertDocumentFromURL方法,把教师选择的试题一个一个的插入到这个空白的word文件中,生成一个试卷。
方法:function InsertDocumentFromURL( DocURL);
功能:插入指定URL的Word文件到当前光标处。
说明:DocURL:字符串类型,Word文件的相对当前页面的URL位置。
如果DocURL参数的第一个字符是"/",那么不管当前页面路径是什么,相对路径都是Web根路径 Http://yourWebSite/开始。
细节1:本demo中打开的不是一个空白的word文件,是有个标题的“中学期中考试试题”还有个“一。 选择题” 的开头,word打开文件时默认光标位置在整个文件的最前面,所以需要把光标定位到文档末位,用js调用的office的VBA接口(soaoffice是支持js调用VBA接口的,这也是为什么用soaoffice的原因)定位光标到文档末尾:
document.getElementById('SOAOfficeCtrl').Document.Application.Selection.EndKey(6);
细节2:每插入一个试题之前给试题添加一个编号,还是用soaoffice的js调用的office的VBA接口功能,pNum是保存试题的编号:
document.getElementById('SOAOfficeCtrl').Document.Application.Selection.Range.Text = '" + String.valueOf(pNum) + ".';
细节3:本demo把各个试题文件(doc格式)直接保存到数据库字段中了,可以打开demo/demodata/soademo.mdb文件,stream表中两个字段:ID和Word,word字段中保存的“长二进制数据”就是试题文件。用soaoffice打开各个试题文件编辑的时候是用openfile.jsp页读取指定的文件输入的文件流,见代码edit.jsp中: SOACtrl.webOpen("openfile.jsp?ID="+sID, 2, "somebody", "Word.Document");
保存文件的时候,使用savefile.jsp保存文件流到数据库字段中,见代码edit.jsp中: SOACtrl.SaveDocURL = "savefile.jsp?ID=" + sID;
没做的细节:如果利用soaoffice的DocText属性在编辑试题的时候把试题的文本获取到,同样保存到数据库的文本字段里,那样就可以对试题做全文检索了,也可以做试题的预览功能,如果谁有兴趣的话,可以参考链接http://soaoffice.javaeye.com/blog/771100中的方法添加上这个功能,可惜这个文章里用的是.Net,看起来会麻烦点。
本demo代码下载:http://ishare.iask.sina.com.cn/f/10669215.html
- 选择题库中的试题动态生成试卷(word格式)
- 004Delphi题库系统与试卷生成
- 题库及试卷生成系统 技术总结
- aspose.words 操作word生成试卷
- aspose.words 操作word生成试卷
- aspose.words 操作word生成试卷
- C#程序设计(十三)----获取题库中的试题号
- C#试卷题库管理系统
- 动态生成WORD内容
- poi动态生成word
- Hibernate考试试题 (题库)
- 把题库里面的试题导出成word的形式
- 试卷word读取
- word文档生成CHM格式
- Qt5生成Word格式报告
- HTML格式字符串生成Word
- 简明题库(试卷库)管理系统 下载
- C# 动态生成Word文档
- 使用Adsutil.vbs脚本获取IIS配置信息及账号密码
- Graphics---FingerPaint (MaskFilter)
- 七届五中全会今召开 专家称将聚焦公平正义
- OnEraseBkgnd与onpaint的联系(转载)
- onpropertychange属性
- 选择题库中的试题动态生成试卷(word格式)
- 身份证号码规则
- 项目文档编写规范与代码规范
- 用js程序给word中的书签完美赋值(赋值以后书签还存在)
- svn图标说明
- Linux文件编码的查看及修改
- c# windows api message
- Oracle中汉字到底占多少个字节
- JSP中的跳转: