需求背景

在互联网教育行业,做内容相关的项目经常碰到的一个问题就是如何动态生成一张word试卷。事先把题库中的每一道试题都已经保存成一个独立的word文件了,但是在选择了部分试题生成一张word试卷的时候,如果不能通过java程序来合并已经选择了的word试题文件,那么就只能通过手动录入和拷贝的方式来合并word内容,效率低下,而且人工成本和录入出错率都较高。

问题难点

使用POI来实现word合并需要面对的困难主要有以下几个方面:

word 结构问题 —— word不开源,且含有很多非文本内容,比如图表、图片,而已知的常规方法只能解析纯文本内容,所以如果不知道word内部层级结构,解析将难以进行。

word 版本问题 —— 目前word有docx和doc两种文档格式,解析是否要全部兼容?当然,前提是已经成功解析一种类型。

word 规范问题 —— 有些word可能是早期制作的,返工代价太大,所以格式内容多样化。而且就算制定word格式规范,新制作的word也无法保证格式一定正确。

使用Jacob来实现word文档合并要面对的问题:

服务器必须是Windows操作系统 —— 目前之所以web项目多用Java开发,就是因为服务器可以是Linux、Unix等非Windows的系统来降低项目的成本。

服务器上必须安装Office —— Jacob的意思就是: Java COM Bridge,java中调用office提供的com接口来实现对Office文件的操作。

并发问题 —— 如果多用户同时在线生成word文件就必须处理此并发问题,稍有不慎,就会在服务器端产生Office的死进程,死锁服务器的内存资源。

解决方案

问题研究一段时间后,进展缓慢,在反复百度的过程中发现PageOffice提供了很好的解决方案,并且在PageOffice的示例程序中就有相关的演示,只不过PageOffice的演示示例是把word文件以二进制流的形式保存在数据库中,只需要在自己的项目中改为用磁盘文件的方式保存word文件就可以了。PageOffice方案采用了调用客户端Office接口进行word文档合并,这样就同时解决了word格式问题、版本问题、规范问题和多用户的并发问题,对服务器端也没有任何要求,堪称完美。

PageOffice for Java的开发包下载地址:http://www.zhuozhengsoft.com/dowm/ ,拷贝解压出来的 Samples4 文 件 夹 到 Tomcat 的 Webapps 目 录 下 , 访 问 : http://localhost:8080/Samples4/index.html,查看综合演示: 三、2、在Word文档中动态生成一张试卷

java合并word_[转载]java合并word文件相关推荐

  1. java itext word_Java使用iText生成word文件的解决方案 | 学步园

    转自[http://www.31km.cn/post/450.html] JAVA生成WORD文件的方法目前有以下种: 一种是jacob 但是局限于windows平台 往往许多JAVA程序运行于其他操 ...

  2. Java开发在线打开编辑保存Word文件(支持多浏览器)

    Java调用PageOffice实现在线编辑保存Word文件(以jsp调用为例,支持SSM.SSH.SpringMVC等流行框架) 1. 下载PageOffice开发包:http://www.zhuo ...

  3. java poi 上传与下载word文件

    java编程要实现对word的操作没有vb那种编程语言来得容易,得借助一些开源组件,其中就包括jacob.poi等, 而poi应用得最为广泛,对word2003和2007的读和写word操作都十分方便 ...

  4. java开发在线打开编辑保存word文件

    Java调用logo是"P"图标的第三方插件,实现在线编辑保存Word文件(以jsp调用为例,支持SSM.SSH.SpringMVC等流行框架) 工具/原料 Eclipse或MyE ...

  5. java批量导出word_java 批量生成word 文件

    最近在工作中遇到一个需求,我有一个拥有3000行数据的excel文件和一个word模板. 我需要将excel文件中的每一行数据填充到word模板文件中生成一个Word文件. 考虑到数据量较大且需求有可 ...

  6. java office 集成开发_[转载]Java集成PageOffice在线打开编辑word文件 - Spring Boot

    开发环境:JDK1.8.Eclipse.Sping Boot + Thymeleaf框架. 一. 构建Sping Boot + Thymeleaf框架的项目(不再详述): 1. 新建一个maven p ...

  7. java使用Spire.Doc生成的word文件去除水印(头部的警告信息)

    1.需求 通过word模板和库表中数据动态生成word文档. word操作工具本身自带word转xml(直接另存为xml即可). 但是需求明确了,只能用word模板,也不允许用户手动从word转xml ...

  8. python合并word_用Python实现Word多文档合并

    通过手动的方式可以很方便的把多个Word文档合并为一个.但如何通过代码实现批量Word的合并呢?操作步骤来了. 1.使用python-docx和docxcompose扩展库 安装扩展库 pip ins ...

  9. 一、后端:针对用JAVA POI解决已知路径WORD文件增加自定义页眉,灵活设置页眉字体部分样式@2019

    一.获取添加页眉doc文件 我的项目文件路径: String reportSavePath= "****************"; DOCX文件一: changer.setAcc ...

最新文章

  1. Android-ImageLoader的最基础的操作
  2. 无法启动程序,因为计算机中丢失msvcr.dll
  3. win7组策略-计算机配置,win7系统组策略设置系统配置模块的操作方法
  4. 双向链表逆置c语言,【C++】实现双向链表的所有操作,包括逆置双链表(三种方法)...
  5. 4月6日米粉节:小米手机新一轮10万台开放购买
  6. 【Flink】Flink CDH6.3.2 下的yarn per job模式 savepoint和checkpoint,卡住,没有保存成功文件
  7. 【专家有话说】如何用TI-ONE与Angel框架玩转腾讯广告算法大赛?
  8. python判断字母大写_python判断字符串是字母 数字 大小写(转载)
  9. 模拟电子技术动画-PN结(动画是转的)内容再修改
  10. Android事件分发机制详解:史上最全面、最易懂
  11. spiders:你好污啊
  12. WSUS环境下客户端常用命令
  13. Java Session对象的钝化和活化
  14. HADOOP读写性能测试
  15. .net rar zip压缩包解压
  16. 用计算机来解锁密码,电脑忘记开机密码怎么办?如何解锁?
  17. 亚马逊差评怎么删?常用的几种删差评方法介绍
  18. [TEST] 此文用以测试样式中的各种标签
  19. 迷你世界进云服务器需要密码,迷你世界云服务器
  20. web开发与应用(一)

热门文章

  1. 怎么把音频倒放?三个软件帮你倒放声音
  2. Open JDK 8.0_152-b16 崩溃 : [libzip.so+0x12522] newEntry+0x62
  3. 人为什么要学会思考(学习)?
  4. kali metasploit 制作后门程序远程操控基本使用方法
  5. 【业务安全-01】业务安全概述及其测试流程
  6. 我的 2021 年终总结和 2022 展望
  7. [Flex] 组件Tree系列 —— 支持CheckBox组件
  8. 中国人事信息管理系统故障处理
  9. php 修改服务器文件上传大小限制
  10. 嘉士达擦玻璃机器人_擦窗机器人哪个牌子好?最好用的三个擦玻璃机器人品牌推荐...