欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

javapoi-tlword模板填充

时间:2023-07-01
java poi-tl word模板填充
文章目录

java poi-tl word模板填充前言一、引入maven库二、读入数据三、示例代码总结


前言

word填充基于com.deepoove 的 poi-tl


一、引入maven库

注意:版本对应 poi-tl 版本 1.9.0-beta 对应 apache poi 版本 4.1.2

代码如下(示例):

com.deepoove poi-tl 1.9.0-beta

二、读入数据

默认采用${key}的形式进行填充!
原word模板:

效果图:

三、示例代码

代码如下(示例):

public static void main(String[] args) throws Exception{ resolveTemp(); } public static File resolveTemp() throws Exception { String path = System.getProperty("user.dir") + "/file"; Map datas = new HashMap<>(); datas.put("dept", "采购部"); datas.put("name", "张三"); LocalDate date = LocalDate.now(); datas.put("year", date.getYear()); datas.put("month", date.getMonthValue()); datas.put("day", date.getDayOfMonth()); List> itemList = new ArrayList<>(); Map itemMap = new HashMap<>(); itemMap.put("goods", "笔记本电脑"); itemMap.put("num", "2"); itemMap.put("cost", "10000"); itemMap.put("remark", "按需采购"); itemList.add(itemMap); itemMap = new HashMap<>(); itemMap.put("goods", "台式电脑"); itemMap.put("num", "1"); itemMap.put("cost", "8000"); itemMap.put("remark", "按需采购"); itemList.add(itemMap); datas.put("item", itemList); datas.put("total", "18000.00"); //读取图片 File file = new File(path + "/1.png"); BufferedImage bi = ImageIO.read(file); int width = bi.getWidth(); //源图高度 int height = bi.getHeight(); datas.put("image", new PictureRenderData(width, height, PictureType.PNG, new FileInputStream(file))); System.out.println("datas = " + datas); HackLoopTableRenderPolicy hackLoopTableRenderPolicy = new HackLoopTableRenderPolicy(); Configure config = Configure.builder() .buildGramer("${", "}")//此处可以变更原模板${} .bind("item", hackLoopTableRenderPolicy)//标记表格参数 .build(); String sourceFile = path + "/template/采购单.docx"; String docNow = LocalDateTimeUtils.formatDate(date, "yyyy年MM月dd日"); String targetFile = path + "/order/采购单" + docNow + ".docx"; XWPFTemplate template = XWPFTemplate.compile(new FileInputStream(sourceFile), config).render(datas); File wordFile = new File(targetFile); File parentFile = wordFile.getParentFile(); if (!parentFile.exists()) { parentFile.mkdirs(); } FileOutputStream out = new FileOutputStream(wordFile); template.write(out); out.flush(); out.close(); template.close(); return wordFile; }


总结

以上就是今天要讲的内容,本文仅仅简单介绍了poi-tl的使用,喜欢就点个赞吧!

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。