最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

天天消息!docx替换word属性打勾

来源:博客园

原文链接:https://blog.csdn.net/qq_32793985/article/details/115867844

之前写过一个POI 依据word模板 替换 ${xxx}属性 demo,正式上项目中,还有一些不足,比如说表格/图片/复选框等… 以poi的方式扩展起来很麻烦,还要整合/抽离一些方法,编码量太过于复杂。


(资料图片)

由此采用新的方式去实现 POI -TL

官网:Poi-tl Documentation

使用

maven

com.deepoove poi-tl 1.9.112345Gradle

compile group: "com.deepoove", name: "poi-tl", version: "1.9.1"1使用:

模板样式:

效果:

若插入图片,则模板里应为 :${@urlImg}

@Test public void test() throws Exception { Map datas = new HashMap<>(); datas.put("A", "北京盛世科技有限公司"); datas.put("B", "北京科技有限公司"); datas.put("C", "12342213391139435111"); datas.put("D", "201809823481"); datas.put("E","华东"); datas.put("F","北京海淀地块1"); datas.put("G","A"); datas.put("H","8"); datas.put("I","1013"); datas.put("J","李青书"); datas.put("K","上海科技集团"); datas.put("L","1000000000000000"); datas.put("M","2015483247238"); datas.put("N","自然人更换"); datas.put("O","测试科技公司"); // 打印成PDF时需设置,但不好使。 TextRenderData("\uF0FE",new Style("Wingdings 2",14)) datas.put("AA",new TextRenderData("R",new Style("Wingdings 2",14))); datas.put("BB",new TextRenderData("R",new Style("Wingdings 2",14))); datas.put("CC",new TextRenderData("R",new Style("Wingdings 2",14))); datas.put("DD",new TextRenderData("R",new Style("Wingdings 2",14))); datas.put("EE",new TextRenderData("R",new Style("Wingdings 2",14))); datas.put("FF",new TextRenderData("R",new Style("Wingdings 2",14))); datas.put("GG",new TextRenderData("R",new Style("Wingdings 2",14))); datas.put("HH",new TextRenderData("R",new Style("Wingdings 2",14))); datas.put("II",new TextRenderData("R",new Style("Wingdings 2",14))); datas.put("JJ",new TextRenderData("R",new Style("Wingdings 2",14))); datas.put("KK",new TextRenderData("□",new Style("宋体",14))); datas.put("LL",new TextRenderData("R",new Style("Wingdings 2",14)));

// 设置年月日 datas.put("Date",DateUtils.formatDate(new Date(),"yyyy年MM月dd日")); datas.put("UserName","姜泥");

// 图片 datas.put("urlImg", Pictures.ofUrl("http://deepoove.com/images/icecream.png", PictureType.PNG) .size(300, 300).create()); // 通过模板文件直接获取 /* XWPFTemplate.compile("src/test/java/DocTemplate/testRenamed.docx").render(datas) .writeToFile("src/test/java/DocTemplate/testRenamed-print.docx");*/ // 通过字节流方式 ByteArrayOutputStream bos = new ByteArrayOutputStream(); XWPFTemplate.compile("src/test/java/DocTemplate/test.docx").render(datas).writeAndClose(bos); }1234567891011121314151617181920212223242526272829303132333435363738394041424344454647当然如果有些同学更偏爱freemarker ${}的方式,poi-tl 也支持

// 官网实例ConfigureBuilder builder = Configure.builder();XWPFTemplate.compile("template.docx", builder.buid());builder.buildGramer("${", "}");

// 我在项目中使用XWPFTemplate.compile(fileInputStream, Configure.builder().buildGramer("${", "}") .build()).render(datas).writeAndClose(bos);

关键词: 有限公司 北京科技 上海科技