Java生成word文档~框架对比+实战

一、框架对比

1.1 框架概述

技术优点缺点
Jacob功能强大代码量大,设置样式繁琐;需要windows平台支持,无法跨平台
Apache POI读写excel功能强大、操作简单一般只用它读取word,能够创建简单的word,不能设置样式,功能太少
Java2word功能强大,操作简单能满足一般要求,不支持07格式,国人开发的,参考资料较多,需要windows平台支持
iText功能全,能满足一般要求不能直接生成或操作doc文档,只能生成rtf格式的文档,rtf也可以用word打开
FreeMarker(推荐)代码量少,样式、内容容易控制,打印不变形,完全符合office标准需要提前设计好word模板,把需要替换的地方用特殊标记标出来

注意: 每个框架都有其存在的必要性,大家需要结合自身的业务场景来选择不同的框架

1.2 框架对比

1.2.1 Jacob

是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。通过Jacob实现了在Java平台上对微软Office的COM接口进行调用。

  • 优点:调用微软Office的COM接口,生成的word文件格式规范。
  • 缺点:服务器只能是windows平台,不支持unix和linux,且服务器上必须安装微软Office。

1.2.2 Apache POI

包括一系列的API,它们可以操作基于MicroSoft OLE 2 Compound Document Format的各种格式文件,可以通过这些API在Java中读写Excel、Word等文件。

  • 优点:跨平台支持windows、unix和linux。
  • 缺点:相对与对word文件的处理来说,POI更适合excel处理,对于word实现一些简单文件的操作凑合,不能设置样式且生成的word文件格式不够规范。

1.2.3 Java2word

是一个在Java程序中调用 MS Office Word 文档的组件(类库)。该组件提供了一组简单的接口,以便Java程序调用他的服务操作Word 文档。 这些服务包括: 打开文档、新建文档、查找文字、替换文字,插入文字、插入图片、插入表格,在书签处插入文字、插入图片、插入表格等。

  • 优点:足够简单,操作起来要比FreeMarker简单的多。
  • 缺点:没有FreeMarker强大,不能够根据模版生成Word文档,word的文档的样式等信息都不能够很好的操作。

1.2.4 iText

操作Excel还行。对于复杂的大量的word也是噩梦。用法很简单, 但是功能很少, 不能设置打印方向等问题。

1.2.5 FreeMarker(推荐)

生成word文档的功能是由XML+FreeMarker来实现的。先把word文件另存为xml,在xml文件中插入特殊的字符串占位符,将xml翻译为FreeMarker模板,最后用Java来解析FreeMarker模板,编码调用FreeMarker实现文本替换并输出Doc。

  • 优点:比Java2word功能强大,也是纯Java编程。
  • 缺点:
    • 生成的文件本质上是xml,不是真正的word文件格式,有很多常用的word格式无法处理或表现怪异,比如:超链、换行、乱码、部分生成的文件打不开等。
    • 出错率较高,小心维护

1.2.6 PageOffice

生成word文件。PageOffice封装了微软Office繁琐的vba接口,提供了简洁易用的Java编程对象,支持生成word文件,同时实现了在线编辑word文档和读取word文档内容。

  • 优点:跨平台支持windows、unix和linux,生成word文件格式标准,支持文本、图片、表格、字体、段落、颜色、超链、页眉等各种格式的操作,支持多word合并,无需处理并发,不耗费服务器资源,运行稳定。
  • 缺点:必须在客户端生成文件(可以不显示界面),不支持纯服务器端生成文件。

二、项目使用

2.1 FreeMarker

2.1.1 基本介绍

FreeMarker是一个基于Java的模板引擎,最初专注于使用MVC软件架构生成动态网页。但是,它是一个通用的模板引擎,不依赖于servlets或HTTP或HTML,因此它通常还用于生成源代码,配置文件或电子邮件。
此时,我们用它动态生成xml文件,进而导出word文档。

2.1.2 流程图

在这里插入图片描述

2.1.3 实战

大家可以先参考这个来写,稍后我会补充进去:例如基础文本、数据列表、图片

https://blog.csdn.net/weixin_44516305/article/details/88049964

三、参考文献

https://blog.csdn.net/weixin_42039228/article/details/123798801
https://blog.csdn.net/qq_36961530/article/details/72628028
https://blog.csdn.net/weixin_44516305/article/details/88049964

  • 25
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值