关于使用Java2word导出word的使用流程

发布于:2023-04-27 ⋅ 阅读:(433) ⋅ 点赞:(0)

方案

总的来说,java导出word大致有5种解决方案:

1:Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。通过Jacob实现了在Java平台上对微软Office的COM接口进行调用。
  优点:调用微软Office的COM接口,生成的word文件格式规范。
  缺点:服务器只能是windows平台,不支持unix和linux,且服务器上必须安装微软Office。
2:Apache POI包括一系列的API,它们可以操作基于MicroSoft OLE 2 Compound Document Format的各种格式文件,可以通过这些API在Java中读写Excel、Word等文件。
  优点:跨平台支持windows、unix和linux。
  缺点:相对与对word文件的处理来说,POI更适合excel处理,对于word实现一些简单文件的操作凑合,不能设置样式且生成的word文件格式不够规范。
3:Java2word是一个在java程序中调用 MS Office Word 文档的组件(类库)。该组件提供了一组简单的接口,以便java程序调用他的服务操作Word 文档。 这些服务包括: 打开文档、新建文档、查找文字、替换文字,插入文字、插入图片、插入表格,在书签处插入文字、插入图片、插入表格等。
  优点:足够简单,操作起来要比FreeMarker简单的多。
  缺点:没有FreeMarker强大,不能够根据模版生成Word文档,word的文档的样式等信息都不能够很好的操作。
4:FreeMarker生成word文档的功能是由XML+FreeMarker来实现的。先把word文件另存为xml,在xml文件中插入特殊的字符串占位符,将xml翻译为FreeMarker模板,最后用java来解析FreeMarker模板,编码调用FreeMarker实现文本替换并输出Doc。
  优点:比Java2word功能强大,也是纯Java编程。
  缺点:生成的文件本质上是xml,不是真正的word文件格式,有很多常用的word格式无法处理或表现怪异,比如:超链、换行、乱码、部分生成的文件打不开等。不支持模板顺序变更。
5:PageOffice生成word文件。PageOffice封装了微软Office繁琐的vba接口,提供了简洁易用的Java编程对象,支持生成word文件,同时实现了在线编辑word文档和读取word文档内容。
  优点:跨平台支持windows、unix和linux,生成word文件格式标准,支持文本、图片、表格、字体、段落、颜色、超链、页眉等各种格式的操作,支持多word合并,无需处理并发,不耗费服务器资源,运行稳定。
缺点:必须在客户端生成文件(可以不显示界面),不支持纯服务器端生成文件。

综合以上资料参考以及项目实际需求(需要支持模板中内容顺序的变更)采用了第三种java2word的方案。

实现

  1. 项目地址: https://github.com/leonardoanalista/java2word
    源码路径
    将这个word文件夹拷贝到自己的工程/src目录下面。这样在自己项目中就可以使用了。
  2. 使用
    使用时,需要实例化IDoCument,使用addEle方法添加对应标题,以及正文字段
  3. 特殊注意
    因为导出word需要导出图片,且项目中的图片属于base64,而java2word中添加图片仅支持本地图片,所以需要对java2word源码内容进行修改
    (1)新增,通过base64实例化Image对象的构造方法

在这里插入图片描述
ps:需要重写getBufferedImage方法,给BufferedImage赋值
在这里插入图片描述
(2)在实例化Image对象时,需要获取BufferedImage对象,获取图片长宽,如果图片过宽时,需要对图片的宽度进行限制

效果

效果是公司项目 不截图了 人懒 不想重弄个自己写的了


网站公告

今日签到

点亮在社区的每一天
去签到