java使用Java Word 的模板引擎 poi-tl操控导出word文件

1,506 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

pom文件中引入依赖

<!--  生成word工具包-->
        <dependency>
            <groupId>com.deepoove</groupId>
            <artifactId>poi-tl</artifactId>
            <version>1.7.3</version>
        </dependency>
  
<!--  上面需要的依赖-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.1.2</version>
        </dependency>

制作导出word用的模板文件docx,如图

java导出word代码

import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.policy.HackLoopTableRenderPolicy;
import com.google.common.collect.Lists;
 
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
/**
 * @Description:
 * @Author: Tarzan Liu
 * @Date: 2020/4/2 14:54
 */
public class test {
 
    public static void  test(){
        HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy();
 
        Configure config = Configure.newBuilder().bind("list", policy).build();
 
        List<Map<String, Object>> list= Lists.newArrayList();
        for (int i = 0; i < 5; i++) {
            Map<String, Object> data = new HashMap<>();//通过map存放要填充的数据
            data.put("year","201"+i);
            data.put("num",33+i);
            list.add(data);
        }
        Map<String, Object> data = new HashMap<>();//通过map存放要填充的数据
        data.put("list",list);
        XWPFTemplate template = XWPFTemplate.compile("E:\\test\\ccc.docx",config).render(data);//调用模板,填充数据
        try {
        FileOutputStream out = new FileOutputStream("E:\\test\\test.docx");//要导出的文件名
        template.write(out);
        out.flush();
        out.close();
        template.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
 
    public static void main(String[] args) {
        test.test();
    }
 
}

idea运行输出图

导出后的文件如图