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

相关推荐
瓯雅爱分享28 分钟前
Java+Vue构建的采购招投标一体化管理系统,集成招标计划、投标审核、在线竞价、中标公示及合同跟踪功能,附完整源码,助力企业实现采购全流程自动化与规范化
java·mysql·vue·软件工程·源代码管理
mit6.8243 小时前
[C# starter-kit] 命令/查询职责分离CQRS | MediatR |
java·数据库·c#
诸神缄默不语3 小时前
Maven用户设置文件(settings.xml)配置指南
xml·java·maven
任子菲阳3 小时前
学Java第三十四天-----抽象类和抽象方法
java·开发语言
学Linux的语莫4 小时前
机器学习数据处理
java·算法·机器学习
找不到、了4 小时前
JVM的即时编译JIT的介绍
java·jvm
西瓜er4 小时前
JAVA:Spring Boot 集成 FFmpeg 实现多媒体处理
java·spring boot·ffmpeg
你总是一副不开心的样子(´ . .̫ .4 小时前
一、十天速通Java面试(第三天)
java·面试·职场和发展·java面试
迎風吹頭髮5 小时前
UNIX下C语言编程与实践63-UNIX 并发 Socket 编程:非阻塞套接字与轮询模型
java·c语言·unix
我是华为OD~HR~栗栗呀5 小时前
23届考研-Java面经(华为OD)
java·c++·python·华为od·华为·面试