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

引用\[1\]:NoClassDefFoundError问题和ClassNotFoundException问题不一样,前者一般发生在编译时能找到对应的类,但运行时找不到,后者发生在编译时就找不到对应的类。引用\[2\]:在项目打包部署完成后,使用jar包在部署环境运行时,出现了java.lang.NoClassDefFoundError: org.apache.poi.POIXMLDocument的错误。根据我的了解,这个错误通常是由于缺少依赖包或者依赖冲突导致的。解决这个问题的方法有几种:使用XSSWorkbook替代POIXMLDocument,确保pom文件中引入了正确的依赖包,检查是否有依赖冲突,以及检查是否在使用模块中声明了所需的依赖。另外,还有一种解决办法是修改POIXMLDocumentPart文件中的代码。\[2\]引用\[3\]:为了解决这个问题,你可以在pom文件中添加以下maven依赖: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.0</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.0</version> </dependency> 这样应该能解决Caused by: java.lang.ClassNotFoundException: org.apache.poi.POIXMLTypeLoader的问题。\[3\] #### 引用[.reference_title] - *1* *2* *3* [java.lang.NoClassDefFoundError: org.apache.poi.POIXMLDocument问题排查解决](https://blog.csdn.net/weixin_45937536/article/details/128904930)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暗余

码字来之不易,您的鼓励我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值