poi库简单使用(java如何实现动态替换模板Word内容)

目录

Blue留言:

Blue的推荐:

什么是poi库?

实现动态替换

第一步:依赖

第二步:实现word模板中替换文字

模板word:

通过以下代码:(自己建一个类,随意取名,主要是看test2这个函数)

第三步:实现word模板中替换图片

模板:

通过以下代码:

效果:

第四步:实现word模板表格

模板:

代码:

效果:

结语:


Blue留言:

💕💕💕Hello,Hello!!!好久没发文了,最近一直在写我的竞赛的项目,导致没时间写文章。正好,今天也差不多把竞赛项目写的差不多了,也可以来写写文章。俺今天分享一下简单的去使用poi库,希望各位能够从文章中获取经验!!!💕💕💕

Blue的推荐:

推荐学习poi库的网站:

https://www.w3ccoo.com/apache_poi/apache_poi_overview.html

推荐视频:

http://【Java导出Word太简单了,有手就会?】https://www.bilibili.com/video/BV18X4y1v7yD?vd_source=bb412cc25ca27e171f8e17085daad038

什么是poi库?

Apache POI 是一种流行的 API,允许程序员使用 Java 程序创建、修改和显示 MS Office 文件。 它是由 Apache Software Foundation 开发和分发的开源库,用于使用 Java 程序设计或修改 Microsoft Office 文件。 它包含将用户输入数据或文件解码为 MS Office 文档的类和方法。

实现动态替换

第一步:依赖

<dependency>
    <groupId>com.deepoove</groupId>
    <artifactId>poi-tl</artifactId>
    <version>1.12.1</version>
</dependency>

第二步:实现word模板中替换文字

首先我们制作一个模板word,将需要动态替换的文字用{{text}}去替换,其中text可以是任意名称

模板word:

通过以下代码:(自己建一个类,随意取名,主要是看test2这个函数)

java 复制代码
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.data.PictureRenderData;
import com.deepoove.poi.data.Pictures;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class demo1 {
    public static String test2(String mess,String pname) throws IOException {
        
//模板的本地路径
        String path = "D:\\ml\\idea\\jishedemo1\\src\\main\\resources\\doc\\demo1.docx";
//生成后的world的路径
 String pathend="D:\\ml\\idea\\jishedemo1\\src\\main\\resources\\doc\\"+pname+".docx";

//固定写法
        XWPFTemplate template = XWPFTemplate.compile(path);
        Map<String,Object> map= new HashMap<>();
//文字
        String ws=mess;//mess是你想要去动态替换进的文字
        map.put("text",ws);//固定写法
        //固定写法
        template.render(map);
        template.writeAndClose(new FileOutputStream(pathend));
        return pathend;
    }
}

效果:

第三步:实现word模板中替换图片

依旧是制作一个模板word,将需要动态替换的图片用{{@text}}去替换,其中text可以是任意名称,@是必须有的符号。

模板:

通过以下代码:

java 复制代码
 //图片
    @Test
    public void test4() throws IOException {
        //文本
        String path = "D:\\ml\\idea\\jishedemo1\\src\\main\\resources\\doc\\img.docx";
        XWPFTemplate template = XWPFTemplate.compile(path);
        Map<String,Object> map= new HashMap<>();
        //本地图片
        PictureRenderData img=Pictures.of("C:\\Users\\王\\OneDrive\\屏幕截图 2024-07-15 094619.png").create();
        //网络图片
        PictureRenderData img2=Pictures.ofUrl("https://p3.itc.cn/images01/20230925/43d7f951f84549d69fdaa790d1d5dbeb.png").size(300,300).create();
        map.put("img",img);
        map.put("urlImg",img2);

        template.render(map);
        template.writeAndClose(new FileOutputStream("D:\\ml\\idea\\jishedemo1\\src\\main\\resources\\doc\\img1.docx"));
    }

效果:

注意:可以通过如下代码指定 图片大小

java 复制代码
  PictureRenderData img2=Pictures.ofUrl("https://p3.itc.cn/images01/20230925/43d7f951f84549d69fdaa790d1d5dbeb.png").size(300,300).create();

第四步:实现word模板表格

依旧是制作一个模板word,将需要动态替换的表格用{{#table}}替换

模板:

代码:

java 复制代码
 //表格
    @Test
    public void test3() throws IOException {
        //
        String path = "D:\\ml\\idea\\jishedemo1\\src\\main\\resources\\doc\\table.docx";
        XWPFTemplate template = XWPFTemplate.compile(path);
        Map<String,Object> map= new HashMap<>();
        RowRenderData row0 =Rows.of("姓名","年龄").create();//
        RowRenderData row1 =Rows.of("占山","18").create();
        RowRenderData row2 =Rows.of("万兽","20").create();
        TableRenderData table =Tables.create(row0,row1,row2);

        map.put("table",table);//
        template.render(map);
        template.writeAndClose(new FileOutputStream("D:\\ml\\idea\\jishedemo1\\src\\main\\resources\\doc\\table1.docx"));

    }

效果:

结语:

💕💕💕 好了,到了这里我们又该说再见了,>﹏<,我们已简单探讨了Apache POI这一强大的Java库,它在处理Microsoft Office文档(如Excel、Word等)时展现出的卓越能力令人印象深刻。通过本文的详细阐述,我们简单的去了解了Apache POI的基本架构、核心功能,还通过实例展示了如何在实际项目中灵活应用这些功能来解决具体问题。希望这篇文章能够成为您在使用Apache POI进行开发时的得力助手,助您在数据处理与文档自动化领域更加游刃有余。

随着技术的不断进步,Apache POI也在持续更新迭代,引入更多新特性和优化。各位观众老爷可以持续关注Apache POI的官方文档和社区动态,以便第一时间掌握最新信息,充分利用这一强大工具提升工作效率。最后,感谢观众老爷花时间阅读本文,期待您在未来的开发旅程中,能够利用Apache POI创造出更多精彩的应用与解决方案。💕💕💕

相关推荐
Theodore_10221 小时前
4 设计模式原则之接口隔离原则
java·开发语言·设计模式·java-ee·接口隔离原则·javaee
冰帝海岸2 小时前
01-spring security认证笔记
java·笔记·spring
世间万物皆对象3 小时前
Spring Boot核心概念:日志管理
java·spring boot·单元测试
没书读了3 小时前
ssm框架-spring-spring声明式事务
java·数据库·spring
小二·3 小时前
java基础面试题笔记(基础篇)
java·笔记·python
开心工作室_kaic4 小时前
ssm161基于web的资源共享平台的共享与开发+jsp(论文+源码)_kaic
java·开发语言·前端
懒洋洋大魔王4 小时前
RocketMQ的使⽤
java·rocketmq·java-rocketmq
武子康4 小时前
Java-06 深入浅出 MyBatis - 一对一模型 SqlMapConfig 与 Mapper 详细讲解测试
java·开发语言·数据仓库·sql·mybatis·springboot·springcloud
qq_17448285754 小时前
springboot基于微信小程序的旧衣回收系统的设计与实现
spring boot·后端·微信小程序
转世成为计算机大神4 小时前
易考八股文之Java中的设计模式?
java·开发语言·设计模式