首页 > 编程语言 >java通过模板生成word文档

java通过模板生成word文档

时间:2022-08-24 10:56:57浏览次数:92  
标签:java word png template new main data 模板 out

工具库:https://github.com/Sayi/poi-tl

中文文档:http://deepoove.com/poi-tl/

pom依赖

<dependency>
    <groupId>com.deepoove</groupId>
    <artifactId>poi-tl</artifactId>
    <version>1.7.3</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.0.0</version>
</dependency>

示例参考:https://blog.csdn.net/qq_41532872/article/details/108644773

注意windows环境下的路径问题,使用/作为路径分隔符

【示例】

渲染普通文本

public static void main(String[] args) throws IOException {
    Map<String, Object> data = new HashMap<>();
    data.put("title", "司天宏");
    XWPFTemplate template = XWPFTemplate.compile("D:/basis_platform_core/weather/src/main/resources/template.docx")
        .render(data);
    FileOutputStream out;
    out = new FileOutputStream("D:/basis_platform_core/weather/src/main/resources/template2.docx");
    template.write(out);
    out.flush();
    out.close();
    template.close();
}

渲染图片

public static void main(String[] args) throws IOException {
    Map<String, Object> data = new HashMap<>();
    // 本地图片
    data.put("local", new PictureRenderData(80, 100, "C:/Users/shen_/Pictures/dir.png"));

    // 图片流
    // data.put("localbyte", new PictureRenderData(80, 100, ".png", new FileInputStream("./logo.png")));

    // 网络图片(注意网络耗时对系统可能的性能影响)
    // data.put("urlpicture", new PictureRenderData(50, 50, ".png", BytePictureUtils.getUrlBufferedImage("http://deepoove.com/images/icecream.png")));

    // java 图片
    //data.put("bufferimage", new PictureRenderData(80, 100, ".png", bufferImage)));
    XWPFTemplate template = XWPFTemplate.compile("D:/jtzl-myworkspace/code/basis_platform_core/weather/src/main/resources/template.docx")
            .render(data);
    FileOutputStream out;
    out = new FileOutputStream("D:/jtzl-myworkspace/code/basis_platform_core/weather/src/main/resources/template2.docx");
    template.write(out);
    out.flush();
    out.close();
    template.close();
}

标签:java,word,png,template,new,main,data,模板,out
From: https://www.cnblogs.com/hhddd-1024/p/16619049.html

相关文章

  • 深入理解Java中的Thread.sleep
    Thread.sleep()方法能够已毫秒为时间单位暂停当前执行的线程,参数值为毫秒不能为负数,否则将抛出IllegalArgumentException异常。Java线程休眠要点:1.它总是暂停当前执行的......
  • 36. Redis---Java使用Redis
    1.前言在开始学习本节内容之前,首先需要您掌握Java编程语言,其次确定您已经安装了Redis服务及JavaRedis驱动,并且能够成功运行Java程序。本节介绍如何在Java中......
  • Blog粘贴图片自动上传到服务器(Java版)
    ​项目需求可发布文章需求涉及到富文本编辑器经过查阅我选择了较为简便不需要后端支持可独立完成的tinymce框架官方文档也是相当完整虽然都是全英文但是有强大的谷......
  • Java-Java集合流操作
    List分组List去重1、单字段去重2、多字段去重List交集方法retainAllList分组去重获取最新记录List分组去重获取最新记录修订记录版本是否发布202......
  • Java-List集合字段求和函数
    一、FunctionCustom通用求和函数使用示例二、求和函数修订记录版本是否发布2020-01-25v1.0是一、FunctionCustom通用求和函数使用示例特点:简化代码......
  • JavaSE的基础
    初始Java1.核心机制:垃圾收集器、跨平台2.JDK、JRE、JVM数据类型1.变量和常量字面常量、字符常量2.基本数据类型:byte1、short2、int4、long8、float4、double8、char2......
  • 【Java学习day04】Hello World
    HelloWorld随便新建一个文件夹,存放代码在新建的文件夹里新建一个java文件新建一个文本文档将新建的文本文档重命名为hello.java注意了!后缀必须改为.java并保存......
  • Word修订内容批量标红
    最近改文章,期刊要求提供所有修改内容都标红的修订稿,本着能不手改就不手改的原则,我尝试检索了一下自动修改的方法,最先找到的是简书上的一篇使用VB宏命令批量修改的文章(Wor......
  • Java基本语法
    >JAVA基本语法标识符定义:凡是自己可以起名字的地方都叫标识符。涉及到的结构:包名、类名、接口名、方法名、变量名、常量名。标识符命名规则:(必须遵守,否则编译不通过)1.......
  • Java 运行时数据区
    Java运行时数据区堆线程栈本地方法栈方法区程序计数器我们的java文件,首先编译成class文件。通过类加载器加载到我们的Java虚拟机。Java虚拟机中,最大的一块是运行......