赞
踩
工作中经常遇到需要操作word模板文档,生成多份文档的场景。
百度了一下找到一个不错的第三方Jar包。
写了份测试代码,亲测有效。
- <dependency>
- <groupId>com.deepoove</groupId>
- <artifactId>poi-tl</artifactId>
- <version>1.9.1</version>
- </dependency>
- /**
- * 模板替换
- * @param templateFilePath 模板文件 存放路径
- * @param resultFilePath 替换问的结果文件 存放路径
- * @param datas 需要替换的数据
- *
- */
- public static void replaceTemplate(String templateFilePath,String resultFilePath,Map<String,String> datas){
- try {
- System.out.println("※※※ start replaceTemplate templateFilePath="+templateFilePath +" resultFilePath= "+resultFilePath);
- XWPFTemplate.compile(templateFilePath).render(datas).writeToFile(resultFilePath);
- // 图片替换
- // datas.put("urlImg", Pictures.ofUrl("http://deepoove.com/images/icecream.png", PictureType.PNG).size(300, 300).create());
- System.out.println("※※※ replace end ");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
Word文档模板定义占位字符: {{name}}
datas 添加需要替换的数据: data.put(name,'张三');
调用方法后,{{name}} 被替换为 张三
- public static void main(String[] args) throws IOException {
- String templateFilePath = "D:\\dev\\pdf\\20211108_模板.docx";
- String resultFilePath = "D:\\dev\\pdf\\"+ UUID.randomUUID()+".docx";
- // 组装需要替换的数据
- Map<String, String> datas = new HashMap<>();
- datas.put("B_info", "北京科技有限公司");
- datas.put("A_address", "陕西省西安市");
- datas.put("date", DateUtil.getCurrentDate());
- // 调用替换方法
- replaceTemplate(templateFilePath,resultFilePath,datas);
-
- System.out.println(" ------------------------ 替换完成 ");
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。