导航:
Word文档生成神器:开源项目poi-tl使用介绍
一. 概述
1.1 适合的场景
- 需要生成word文档的地方,它都可以进行使用;比如我们常见的,根据页面,生成相关的word文档,根据图表等生成word文档提供下载等;
1.2 poi-tl的优势
- 基于模板:操作简单,方便,易于理解;
- 步骤少,没有中间转换环节:模板是Word,生成也是Word,难度低;
- Api易于使用:参考文档即可分分钟造出自己的模板和文档
- 功能丰富,能带图片:支持图片,表格,以及自定义字体,自定义表格,图片格式大小等的设置,对Word的操控可以精细化;
作者本人目前试过其他的word生成技术,除开收费的技术,对于免费的就目前而言,Poi-tl是生成word的最方便,最简单,最优的技术选择之一;
二. poi-tl实例演示:
2.1 使用poi-tl生成word文档
- 创建一个新word文档,在新文档中创建一个文字模板,一个图片模板,一个表格模板; 如图所示:
模板都以 {{ }} 包裹,表格以 # 图片以@ 文字不带标记
- 在java中使用如下代码:
- 引入jar包:
<!-- poi-tl start --> <dependency> <groupId>com.deepoove</groupId> <artifactId>poi-tl</artifactId> <version>1.6.0-beta1</version> </dependency> <!-- end -->
- 运行生成代码:
public static void main(String[] args) throws Exception { XWPFTemplate template= XWPFTemplate.compile("C:\\Code\\scwx\\cdmtc.command.platform\\cdmtc.parsers\\src\\main\\resources\\poi_tl\\template.docx"). render(new HashMap<String,Object>(){{ /* 文字 */ put("title","我是标题啊"); /* 图片 */ put("image",new PictureRenderData(100,100,".png", BytePictureUtils.getUrlBufferedImage("https://img-blog.csdnimg.cn/20190627130806508.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3MTI4MDQ5,size_16,color_FFFFFF,t_70"))); /* 表格 */ RowRenderData header = RowRenderData.build(new TextRenderData("00CC33", "姓名"), new TextRenderData("00CC33", "学历")); RowRenderData row0 = RowRenderData.build("张三", "研究生"); RowRenderData row1 = RowRenderData.build("李四", "博士"); RowRenderData row2 = RowRenderData.build("王五", "博士后"); put("table", new MiniTableRenderData(header, Arrays.asList(row0, row1, row2))); }}); FileOutputStream out=new FileOutputStream("C:\\Code\\scwx\\cdmtc.command.platform\\cdmtc.parsers\\src\\main\\resources\\poi_tl\\out_template.docx"); template.write(out); out.flush(); out.close(); template.close(); }
- 引入jar包:
- 生成的word文档如图所示:
操作前需要引入jar包;直接创建一个main主方法即可测试;
三. 更多帮助信息
3.1 概述:
- 在工作中,主要生成的就是图片,表格,和文字了。在 本文章章节二 中分别介绍了三种的最简单的书写方式,已经可以满足绝大多数需求了;
- 如果我们需要动态生成图片,如动态生成Echarts图片(统计图) 可以参考上一篇文章;动态生成Echarts 通过动态生成Echarts图片,我们可以自动的生成统计图表,再将统计图表的图片和我们所需要的内容和表格融合成word文档;