选择题库中的试题动态生成试卷(word格式)
相信做教育系统的公司都会有这个需求,对于试题的管理最终还是要生成试卷的,怎么生成试卷呢?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格式)相关推荐
- mysql题库随机抽取试题_Python从MySQL数据库中面抽取试题,生成试卷
一.背景 本文章主要是分享如何使用Python从MySQL数据库中面抽取试题,生成的试卷每一份都不一样. 二.准备工作 1.安装Python3 2.安装库 pip install python-doc ...
- java 复杂word_Java 动态生成复杂 Word
Java 动态生成复杂 Word 阅读目录 1. 制作 Word 模版,将你需要动态生成的字段用${}替换. 2. 将 Word文档保存为 xml . 3. 引入项目. 项目中需要用 java 程序生 ...
- Springboot中使用freemarker动态生成word文档
文章目录 freemarker模板动态生成word文档 前言 准备 简单模板准备 <一> `word 2003` 新建`.doc` 模板 <二> 另存为`.xml` 文件,格式 ...
- java 生成复杂的word_Java 动态生成复杂 Word
项目中需要用 java 程序生成doc 文件,百度一番,发现FreeMarker 的评价比较高. FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出,至于想详细了解 Fr ...
- navicat中导出数据表结构为word格式
1.对于要导出的表执行sql语句如下: SELECTCOLUMN_NAME 列名,COLUMN_TYPE 数据类型,DATA_TYPE 字段类型,IS_NULLABLE 是否为空,COLUMN_DEF ...
- JSTL标签库动态生成表格
项目中遇到一个动态生成表格的问题,由于表格的行和列都不是固定的,而是从数据库中取得的,因此需要动态的创建表格. 由于规范中要求使用JSTL标签库,避免JSP页面冗余java代码,而我的数据库暂时又连不 ...
- 通过 Java + wordgo 生成试卷
本文讲解通过 WordGo,生成word文件,并通过该项目实现,生成试卷 word 文件. 业务背景 一个试题库系统组卷功能,需要将获取到的试题,通过一定排版,生成word文件.通常来说我们可以通过f ...
- JAVA基础加强(张孝祥)_类加载器、分析代理类的作用与原理及AOP概念、分析JVM动态生成的类、实现类似Spring的可配置的AOP框架...
1.类加载器 ·简要介绍什么是类加载器,和类加载器的作用 ·Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类负责加载特定位置的类:BootStrap,ExtClassLoader ...
- java中的静态、动态代理模式以及Spring中的CgLib动态代理解读(面试必问)
java中的静态.动态代理模式以及Spring中的CgLib动态代理解读(面试必问) 静态代理 动态代理 CgLib动态代理 基础知: 反射知识 代理(Proxy)是一种设计模式,提供了对目标 ...
最新文章
- 好程序员web前端分享值得参考的css理论:OOCSS、SMACSS与BEM
- Epson投影仪指示灯信息
- Kubernetes 第五章 YAML
- 模拟电路技术之基础知识(一)
- 《Python Cookbook 3rd》笔记(5.6):字符串的 I/O 操作
- mockjs语法规范、设置mockjs拦截响应时间、Mock.Random占位符生成随机数据
- 【操作系统】独立进程与协作进程
- VR来了,科技的各行各业要如何做好准备?
- arcgis python 教程-终于晓得arcgis-python入门教程
- vs2019写c语言用不了scanf,VS2010里编C程式不能用scanf()吗?
- ios+android+内存管理,iOS内存管理
- 外行也看得懂!了解量子计算的奇迹
- 在华为工作十年的感悟
- 现在国内程序员的工资是什么行情?
- C语言—打印1000年到2000年的闰年
- 社交网络中节点重要性的度量
- 《个人理财》书中的精髓:如何通过金融学理论知识的学习,建立更加完善的金融体系,让自己更加富有。
- 服务器关闭微软小娜,win10小娜总是自动弹出怎么禁止-禁止win10小娜自动弹出的方法 - 河东软件园...
- then里面调用 await
- win10电脑防火墙允许ping设置
热门文章
- CentOS-5.6-x86_64 配置SSH无密码登陆
- php 实现店铺装修5
- 刘涛代言的美丽田园冲刺港股:年内盈利2亿 突击分红1.2亿
- java上课听不懂怎么办_上课听不懂怎么办?我们告诉你解决办法!
- 计量广义差分操作过程_计量学堂 | 计量经济学最基本的31个问题
- 怎么用svg画一个圆圈(一)
- steps_per_epoch=2000,epochs=100之间的区别
- 用计算机专业怼人,专业示范,教你如何用所学专业知识“怼人”
- js基本概念(上)之数据类型
- win10下,扩展屏不清晰模糊。