Java中使用poi-tl导出word文档

339 阅读1分钟

poi-tl

poi-tl 是基于poi进行的封装,可以使用Java导出一些复杂的word表格,下面做一个很简单的demo

demo

导入对应jar包

这里导入Jar包的时候需要注意,需要注意的是 poi-tl 对应 poi 的版本,以下是几个较新版本的对应关系

这里使用到的是最新的 poi-tl 1.12.1 ,对应的 poi 版本在 5.1.0 以上就可以,如果低于这个版本运行可能会报错,特别是poi 3.x5.x 之间有很多样式方面的写法方法有区别。

导入 poi 和 poi-tl jar 包

<dependency>
    <groupId>com.deepoove</groupId>
    <artifactId>poi-tl</artifactId>
    <version>1.12.1</version>
</dependency>
<!--xls(03)-->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.1</version>
</dependency>
<!--xlsx(07)-->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.1</version>
</dependency>

添加模板进行导出

创建一个以 .docx 为后缀的的 word 文件,然后我们往这个文件中添加内容,这里只是添加一个很简单的字符串,写法和 vue 的写法相似,这样的写法 {{ 对象名 }} 需要注意的是括号对象名前后需要有空格。 创建一个下面这样的word模板。

image.png

编写 java 代码,写入数据

这里直接写入要给字符串给到 text ,替换模板中的占位符

XWPFTemplate template = XWPFTemplate.compile("D/template.docx").render(
        new HashMap<String, Object>(){{
            put("text", "Hi, poi-tl Word这是 poi-tl 的模板引擎");
        }});
try {
    template.writeAndClose(new FileOutputStream("/out.docx"));
}catch (Exception e){
    e.printStackTrace();
}

运行完成后呈现的效果

image.png

需要注意的就是模板和导出之后的文件夹名称需要提前创建否则就会报错。