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创造出更多精彩的应用与解决方案。💕💕💕

相关推荐
2301_811274313 分钟前
大数据基于Spring Boot的化妆品推荐系统的设计与实现
大数据·spring boot·后端
武子康14 分钟前
大数据-230 离线数仓 - ODS层的构建 Hive处理 UDF 与 SerDe 处理 与 当前总结
java·大数据·数据仓库·hive·hadoop·sql·hdfs
武子康16 分钟前
大数据-231 离线数仓 - DWS 层、ADS 层的创建 Hive 执行脚本
java·大数据·数据仓库·hive·hadoop·mysql
苏-言22 分钟前
Spring IOC实战指南:从零到一的构建过程
java·数据库·spring
界面开发小八哥29 分钟前
更高效的Java 23开发,IntelliJ IDEA助力全面升级
java·开发语言·ide·intellij-idea·开发工具
草莓base43 分钟前
【手写一个spring】spring源码的简单实现--容器启动
java·后端·spring
Allen Bright1 小时前
maven概述
java·maven
编程重生之路1 小时前
Springboot启动异常 错误: 找不到或无法加载主类 xxx.Application异常
java·spring boot·后端
薯条不要番茄酱1 小时前
数据结构-8.Java. 七大排序算法(中篇)
java·开发语言·数据结构·后端·算法·排序算法·intellij-idea
努力进修1 小时前
“探索Java List的无限可能:从基础到高级应用“
java·开发语言·list