在Java项目开发中,偶尔会遇到通过程序动态拆分word文档的需求,由于Java本身不能操作Word文档,在网上也都是讨论如何动态合并word,所以这个需求实现起来相当困难,下面就将近期对于Word文件拆分的需求及其实现方式的研究做个简单的总结,供大家参考:
 
1 VBA可以实现word文档拆分功能,在网上也很容易找到示例代码,然而VBA虽然强大,但是对于Java开发的项目提供不了任何帮助。
 
2 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能,但POI的接口非常庞大,方法与属性晦涩难懂,所以多用于简单的处理一下word文件中的数据,比如动态填充数据到word,或修改一下段落格式、文本样式等。
 
3 docx4j算是一款处理word文档的强大工具。虽然它对WORD各种处理在API层面进行了封装,但是像WORD本身的拆分,合并,其作者(Jason Harrop)是单独提出来了,封装成了商用的JAR包来提供支持。docx4j建立了XML文件与JAVA对象互相转换的一个桥梁,所以顾名思义,docx4j主要用来对docx进行一些操作,对于二进制结构化文档的.doc格式就无能为力了。另外就是稍微大一点的docx文档中的xml都会异常庞大和复杂,在服务器端解析xml会占用大量的系统资源,如果同时处理多个并发请求的话,对服务器的压力也是个问题。
 
4 PageOffice是一款国产的商业软件,可以将word文档中的指定区域(用书签标记区域)拆分为子文档。PageOffice封装了VBA对Office文件操作的Java接口,通过Java编程即可实现对word文件的控制。PageOffice的接口中的DataRegion对象(用来操作书签的对象)提供了一个属性setSubmitAsFile(boolean value) 设置为true, 那么在保存文件时DataRegion所包含的文件内容会作为一个子Word文件提交,从而实现word文件拆分。PageOffice接口封装的比较完善,代码量少,容易上手,且PageOffice是在客户端处理文档,不会对服务器造成任何压力。

最新文章

  1. 计算机程序的思维逻辑 (31) - 剖析Arrays
  2. Android 生成LayoutInflater的三种方式
  3. Clion 跨平台的C++ IDE
  4. sstream使用简介
  5. 密码有效性验证失败。该密码不够复杂,不符合 Windows 策略要求
  6. Hierarchy Viewer
  7. 如何将控制台程序包装成windows服务
  8. 用GA算法设计22个地点之间最短旅程-R语言实现
  9. api-gateway实践(04)新服务网关 - 新手入门
  10. zabbix 批量生成聚合图形
  11. 【TCP协议】(3)---TCP粘包黏包
  12. bui前端框架+yii整理
  13. hiero.ui获取实例名的方法
  14. T-SQL :SQL Server 定义数据完整性 6大约束(三)
  15. Android获取版本号
  16. jdbc java程序连接数据库 案例
  17. linux--GCC简单用法
  18. MVC之路由
  19. serialVersionUID的作用以及IDEA、Eclipse如何自动生成serialVersionUID
  20. android 自己定义checkbox 背景图无效的问题

热门文章

  1. npm使用入门
  2. [Luogu2135] 方块消除【区间Dp】
  3. 跳过爱奇艺优酷vip
  4. Android开发 处理拍照完成后的照片角度
  5. P1082 同余方程(扩欧模板)
  6. ArrayBlockingQueue 和LinkedBlockQueue
  7. leetcode-213-打家劫舍二
  8. [JZOJ4682] 【GDOI2017模拟8.11】生物学家
  9. 2016.9.24初中部上午NOIP普及组比赛总结
  10. 容斥原理——hdu1796