因为boss提了一个根据信息自动生成Word的需求,所以我就研究了一下这一方面的库

经过我的研究,一般常用的有以下几种方法:

1.直接freemaker渲染,就是把要加入的数据用${}包起来,然后word另存为xml文件,再改后缀名为.ftl,再进行操作。
使用评价:非常麻烦,一旦你模板文件有一点改动,你就要重复这个另存为改后缀名的过程,然后有时候xml文件里 $和{会分开,又要人工去找,巨烦,但确实是可行的,优点是不用导入额外的jar包,不会冲突。

(简单来说就像走路去西藏)

2.使用poi以及相关封装,比如Easy-poi和poi-tl,这些稍微好用一点,不用改来改去,直接用docx就可以了,调用一下方法就行。
使用评价:比freemaker好一点,但是POI对doc不太友好,并且POI的jar包容易冲突,好像是和Hibernate的包冲突,反正我在自己的空项目里试是没问题的,然后到产品项目里就疯狂冲突,搞得很麻烦。

(简单来说就像开车去西藏)

3.最好用的来了!!就是Spire.Doc!!,他的方法都封装的非常好了,调用起来非常简洁,大部分功能在几行之内就能写完。后面会详细介绍。还有一个问题就是一定要注意版本!要用他的免费版而不是收费版的试用版,试用版是会有水印的,免费版没有的。

使用评价:很简洁,功能也很全面,也支持多个doc版本

(简单来说就像坐飞机,不,应该是坐任意门去西藏)

先直接说下载把:
上面的是他的仓库,下面的是依赖。
这是帮助文档链接
他不友好在什么地方呢,官方只提供了一个maven示例,还是pdf的,而且免费版后面还要加一个.free,如果不仔细研究,根本不知道要写哪个名称。

    <repositories><repository><id>com.e-iceblue</id><url>http://repo.e-iceblue.cn/repository/maven-public/</url></repository></repositories><dependency><groupId> e-iceblue </groupId><artifactId>spire.doc.free</artifactId><version>2.7.3</version>
</dependency>

后面就比较简单了,帮助文档里面都很详细了,我的方法是把所有的信息都放在一个map里,然后在用一个for循环替代

Document documentPage2 = new Document("fileUrl"}
for (String x : map.keySet()) {documentPage2.replace("{" + x + "}", String.valueOf(mapPage2.get(x)), false, true);}

模板大概长这样 ,你也可以不用{}包起来。

Java操作Word方法汇总,并详细介绍最简单的方法!!吊打POI以及那些POI的封装库相关推荐

  1. wavecom java_使用java操作wavecom短信猫来发短信的方法|实例源码介绍

    使用java操作wavecom短信猫来发短信的方法|实例源码介绍.由于业务的需要,用java实现了用wavecom短信猫发短信的功能,本来这个应该用随猫购买的二次开发接口实现的,但由于这几台猫买的时候 ...

  2. Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例

    转载自  Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 第1部分 ArrayList介绍 ArrayList简介 ArrayList 是一个数组队列,相当于 动态数组.与 ...

  3. Java操作Word文档

    Java 生成 Word 的几种方案 参考 ​ 主要有这么一些工具可以使用 Jacob.Apache POI.Java2word.iText,还有一种方法是使用XML作为模板. ​ 使用 XML 的思 ...

  4. Java操作word模板文件

    关于导出word文档,之前想过用ireport但模板文件比较复杂不容易画.所以采取了Java操作word文件,替换word中的元素方法 模板文件如下 单位名称:$ACCTNAME$ NO: $SN$ ...

  5. Java操作word文档将docx转换为pdf格式

    Java操作word文档将docx转换为pdf格式 一.整体说明 在上传 Office 课件时,格式有:doc,docx,xls,xlsx,ppt,pptx,程序需要将其 转换成 pdf 格式, 才能 ...

  6. JAVA中JVM的重排序详细介绍(写得很明白)

    刚刚在研究volatile变量的时候,涉及到重排序的概念,于是发现了这篇很好的文章,写得很简短很明白.所以转载一下. 原文地址:JAVA中JVM的重排序详细介绍 原文贴出来: 重排序通常是编译器或运行 ...

  7. kettle详细使用oracle教程,Kettle入门教程(详细介绍控件使用方法)_kettle详细使用教程,kettle控件介绍...

    Kettle入门教程(详细介绍控件使用方法)本手册主要是对Kettle工具的功能进行详细说明以及如何操作该系统,适合所有使用该系统的人员. 服务查询 数据库查询 数据库连接 流查询 调用存储过程 转换 ...

  8. java操作word,添加页眉,页眉图片,替换书签,添加水印(全)

    java操作word文档,添加页眉文本,页眉图片,替换书签,水印 原模板截图: 生成后的文档效果截图: 第一步:引入maven <dependency><groupId>spi ...

  9. java 操作 word 表格和样式,java读取word表格中的表格 java如何读取word中的excel表格数据...

    Java 利用poi 可以直接读取word中的表格保持样式生1.读取word 2003及word 2007需要的jar包 读取 2003 版本(.doc)的word文件相对来说比较简单,只需要 poi ...

最新文章

  1. parsing:NLP之chart parser句法分析器
  2. XDP/eBPF — 基于 eBPF 的 Linux Kernel 可观测性
  3. java程序讲解_3、Java程序讲解
  4. linux内核优化哪些参数,linux内核参数优化 互联网技术圈 互联网技术圈
  5. 杭州云栖大会阿里云放大招,8K远程医疗会诊引关注
  6. 直击“上云”痛点的 MSP 新生意,万博智云发布云原生迁移工具 HyperMotion 3.0
  7. jpa 跨表_JPA的多表复杂查询
  8. android比较两个字符串,关于java:两个字符串的比较在android中不起作用
  9. 关于如何在ASP.NET 2.0中定制Expression Builders
  10. 2021年陕西高考成绩单招查询时间,2021年陕西高考录取结果什么时候出来,查询时间一览表...
  11. 递归神经网络(Recursive Neural Network, RNN)
  12. spring listener监听器
  13. 进制之间的转换(转)
  14. 用图片替代cursor光标样式
  15. 自动驾驶 Apollo 源码分析系列,感知篇(三):红绿灯检测和识别
  16. 分享几个图床网址,便于大家分享图片
  17. Linux修改和恢复服务器时间
  18. python实现SVG文件解析
  19. OpencCV制作相框效果
  20. 再见,2016(本兮)

热门文章

  1. 机器学习系列-tensorflow-01-急切执行API
  2. leetcode全局变量初始化问题,报错 AddressSanitizer: heap-buffer-overflow on address
  3. PON---无源光网络
  4. 吴恩达推荐深度学习笔记+超详细思维导图!不做学术打工人!
  5. transferto方法的应用_FileChannel中transferTo方法的使用
  6. OJ 1220 勒让德多项式的值
  7. 使用Python+JarvisAI实现AI虚拟助手
  8. Epson针式打印机切纸/存折灯常亮一页打印造成多页的解决方案
  9. iPhone、iPad等iOS系统界面设计字体规范
  10. 三洋服务器显示F6,小天鹅洗衣机显示f6