Word文档生成神器:开源项目poi.tl使用介绍

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文档

  1. 创建一个新word文档,在新文档中创建一个文字模板,一个图片模板,一个表格模板; 如图所示:
    在这里插入图片描述

    模板都以 {{ }} 包裹,表格以 # 图片以@ 文字不带标记

  2. 在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();
      }
      
  3. 生成的word文档如图所示:
    在这里插入图片描述

操作前需要引入jar包;直接创建一个main主方法即可测试;

三. 更多帮助信息

3.1 概述:

  • 在工作中,主要生成的就是图片,表格,和文字了。在 本文章章节二 中分别介绍了三种的最简单的书写方式,已经可以满足绝大多数需求了;
  • 如果我们需要动态生成图片,如动态生成Echarts图片(统计图) 可以参考上一篇文章;动态生成Echarts 通过动态生成Echarts图片,我们可以自动的生成统计图表,再将统计图表的图片和我们所需要的内容和表格融合成word文档;

3.2 官方文档