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

相关推荐
nlog3n2 小时前
Java策略模式详解
java·bash·策略模式
Mryan20055 小时前
解决GraalVM Native Maven Plugin错误:JAVA_HOME未指向GraalVM Distribution
java·开发语言·spring boot·maven
VX_CXsjNo15 小时前
免费送源码:Java+SSM+Android Studio 基于Android Studio游戏搜索app的设计与实现 计算机毕业设计原创定制
java·spring boot·spring·游戏·eclipse·android studio·android-studio
ylfhpy5 小时前
Java面试黄金宝典33
java·开发语言·数据结构·面试·职场和发展·排序算法
乘风!5 小时前
Java导出excel,表格插入pdf附件,以及实现过程中遇见的坑
java·pdf·excel
小小鸭程序员6 小时前
Vue组件化开发深度解析:Element UI与Ant Design Vue对比实践
java·vue.js·spring·ui·elementui
陌路物是人非6 小时前
SpringBoot + Netty + Vue + WebSocket实现在线聊天
vue.js·spring boot·websocket·netty
南宫生6 小时前
Java迭代器【设计模式之迭代器模式】
java·学习·设计模式·kotlin·迭代器模式
seabirdssss6 小时前
通过动态获取项目的上下文路径来确保请求的 URL 兼容两种启动方式(IDEA 启动和 Tomcat 部署)下都能正确解析
java·okhttp·tomcat·intellij-idea
kill bert7 小时前
第30周Java分布式入门 消息队列 RabbitMQ
java·分布式·java-rabbitmq