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这个函数)
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可以是任意名称,@是必须有的符号。
模板:

通过以下代码:
//图片@Testpublic 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"));}
效果:
注意:可以通过如下代码指定 图片大小
PictureRenderData img2=Pictures.ofUrl("https://p3.itc.cn/images01/20230925/43d7f951f84549d69fdaa790d1d5dbeb.png").size(300,300).create();
第四步:实现word模板表格
依旧是制作一个模板word,将需要动态替换的表格用{{#table}}替换
模板:

代码:
//表格@Testpublic 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创造出更多精彩的应用与解决方案。💕💕💕
相关文章:
poi库简单使用(java如何实现动态替换模板Word内容)
目录 Blue留言: Blue的推荐: 什么是poi库? 实现动态替换 第一步:依赖 第二步:实现word模板中替换文字 模板word: 通过以下代码:(自己建一个类,随意取名…...
机器人开源调度系统OpenTcs6二开-车辆表定义
前面已经知道opentcs 需要车辆的模型结构数据,将里面的数据结构化,已表的形式生成,再找一个开源的基础框架项目对车辆进行增删改的管理 表结构: CREATE TABLE Vehicle (id INT AUTO_INCREMENT PRIMARY KEY COMMENT 唯一标识符,n…...
麦歌恩MT6521-第三代汽车磁性角度传感器芯片
磁性编码芯片 -在线编程角度位置IC 描述: MT6521是麦歌恩微电子推出的新一代基于水平霍尔及聚磁片(IMC)技术原理的磁性角度和位置检测传感器芯片。该芯片内部包含了两对互成90放置的水平霍尔阵列及聚磁片,能够根据不同的型号配置来实现对XY࿰…...
【数据结构】堆,优先级队列
目录 堆堆的性质大根堆的模拟实现接口实现构造方法建堆入堆判满删除判空获取堆顶元素 Java中的PriorityQueue实现的接口构造方法常用方法PriorityQueue注意事项 练习 堆 如果有一个集合K {k0,k1, k2,…,kn-1},把它的…...
2024 暑假友谊赛 2
Tree Queries - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路:LCA好题,也有看见用时间戳写的,不是很明白. 用LCA非常好写。 要想到,给出k个节点,要确定一条路径,使得给出的k个点要么在路径上,要么和路径中某点的…...
c++ 线程
在 C 中,std::thread 构造函数可以用于将参数传递给线程。这里是一个基本的示例,展示了如何使用 std::thread 来传递参数: #include <iostream> #include <thread>// 定义一个被线程调用的函数 void threadFunc(int arg1, doubl…...
【SpringBoot】URL映射之consumes和produces匹配、params和header匹配
4.2.3 consumes和produces匹配 //处理request Content-Type为"application/json"类型的请求 RequestMapping(value"/Content",methodRequestMethod.POST,consumes"application/json") public String Consumes(RequestBody Map param){ return…...
vscode配置django环境并创建django项目(全图文操作)
文章目录 创建项目工作路径下载python插件:创建虚拟环境1. 命令方式创建2. 图文方式创建 在虚拟环境中安装Django创建Django项目安装Django插件选择虚拟环境 创建项目工作路径 输入 code . 下载python插件: 创建虚拟环境 1. 命令方式创建 切换在工作目…...
(一)延时任务篇——延时任务的几种实现方式概述
前言 延时任务是我们在项目开发中经常遇到的场景,例如订单超时30分钟自动取消,邮件5分钟后通知等等,对于这样的应用场景,我们又该如何应对呢,尤其是在微服务环境下,如何保证我们的延迟任务并发问题以及数据…...
每天五分钟计算机视觉:目标检测模型从RCNN到Fast R-CNN的进化
本文重点 前面的课程中,我们学习了RCNN算法,但是RCNN算法有些慢,然后又有了基于RCNN的Fast-RCNN,Fast R-CNN是一种深度学习模型,主要用于目标检测任务,尤其在图像中物体的识别和定位方面表现出色。它是R-CNN系列算法的一个重要改进版本,旨在解决R-CNN中计算量大、速度慢…...
环境变量配置文件中两种路径添加方式
环境变量配置文件中两种路径添加方式 文章目录 环境变量配置文件中两种路径添加方式代码示例区别和作用 代码示例 export HBASE_HOME/opt/software/hbase-2.3.5 export PATH$PATH:$HBASE_HOME/binexport SPARK_HOME/opt/software/spark-3.1.2 export PATH$SPARK_HOME/bin:$PAT…...
开放系统互连安全体系结构学习笔记总结
开篇 本文是《网络安全 技术与实践》一书中序章中“开放系统互连安全体系结构”这一块的笔记总结。 定义 开放系统互连(Open System Interconnection, OSI)安全体系结构定义了必需的安全服务、安全机制和技术管理,以及它们在系统上的合理部署…...
linux搭建redis cluster集群
集群介绍: Redis 集群实现了对Redis的水平扩容,即启动N个redis节点,将整个数据库分布存储在这N个节点中,每个节点存储总数据的1/N。 Redis 集群通过分区(partition)来提供一定程度的可用性(availability): 即使集群中有一部分节点失效或者无法进行通讯, 集群也可以继…...
瀚高数据库初级考试认证
pg_dumpall可以转储全局角色和表空间信息 单选题2分 A. 是 B. 否 回答正确(2分) 答案: A 解析:pg_dumpall备份一个给定集簇中的每一个数据库,并且也保留了集簇范围的数据,如角色和表空间定义。 2. 自定义文件格式必须与pg_restore…...
【java基础】spring中使用到的设计模式
Spring框架在其设计和实现中使用了多种设计模式,这些模式帮助Spring框架保持灵活性、可扩展性和易于集成的特点。以下是一些在Spring框架中常见和重要的设计模式: 工厂模式(Factory Pattern) Spring的核心容器使用了工厂模式&…...
浅层深度学习的概述
在人工智能和机器学习的领域中,“深度学习”已成为一个热门话题。该术语通常与多层神经网络和复杂模型联系在一起,然而,“浅层深度学习”是指那些较为简单而且通常只有一两个隐藏层的神经网络。这种模型在许多任务中表现出色,同时…...
如何找到最快解析速度的DNS
如何找到最快解析速度的DNS DNS,即域名系统(Domain Name System),是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使用户更方便地访问互联网,而不用记住能够被机器直接读取的IP数串。 在浏览网页时,我们通常使用域名,而不是IP地址。当域名在…...
【YashanDB知识库】数据库使用shutdown immediate无响应导致coredump
【标题】数据库使用shutdown immediate无响应导致coredump 【问题分类】数据库维护 【关键词】YashanDB, shutdown immediate, coredump 【问题描述】执行shutdown immediate后,数据库一直没有退出,在操作系统层面强制停止数据库进程时发生coredump。…...
web前端 React 框架面试200题(一)
面试题 1. 简述什么是React ( 概念 )? 参考回答: 1、React是Facebook开发的一款JS库。 2、React一般被用来作为MVC中的V层,它不依赖其他任何的库,因此开发中,可以与任何其他的库集成使用&…...
【前端】JavaScript入门及实战91-95
文章目录 91 DOM92 事件93 文档的加载94 DOM查询(1)95 图片切换的练习 91 DOM <!DOCTYPE html> <html> <head> <title></title> <meta charset"utf-8"><style> </style> </head> <body><button id&…...
64_《智能体微服务架构企业级实战教程》授权与认证之授权认证集成测试
前言 配套视频教程: 在 Bilibili课堂、CSDN课程、51CTO学堂 同步发售,提供:源码+部署脚本+文档。 bilibili课堂视频教程:智能体微服务架构企业级实战教程_哔哩哔哩_bilibili CSDN课程视频教程:智能体微服务架构企业级实战教程_在线视频教程-CSDN程序员研修院 51CTO学堂…...
警惕!AI正在悄悄重构全球攻防格局
警惕!AI 正在悄悄重构全球攻防格局 热点聚焦 AI重构网络安全:全球巨头加速布局 2026年5月,全球网络安全领域迎来重大变革,AI技术正在重塑攻防格局。OpenAI发布专为网络安全防御打造的集成化AI平台Daybreak,将安全防…...
新能源车轻量化为什么开始盯上高强镁合金?
续航,是悬在每一台纯电动汽车头上的达摩克利斯之剑。多充一度电、多堆一些正极材料,是一条路;但还有另一条路——把车造得更轻。 SAE(美国汽车工程师学会)的测算已经被反复引用:整车每减重100千克ÿ…...
电容损坏深度诊断,从外观到 ESR精准区分容衰与漏电
在 PCB 故障中,电容损坏占比超 40%,是当之无愧的 “头号杀手”。很多工程师仅靠 “鼓包漏液” 判断电容好坏,殊不知80% 的电容损坏是隐性的—— 外观平整但容值衰减、ESR 升高、轻微漏电,导致供电不稳、系统重启、噪声增大&#x…...
CPU架构启发的智能仓储布局优化实践
1. 仓库布局优化的核心挑战与创新机遇在物流仓储领域,拣货环节通常占据运营成本的55%-65%,而其中约50%的时间消耗在无效行走路径上。传统矩形仓库布局虽然易于规划和施工,但其正交的通道设计导致拣货员需要频繁进行90度转向,这种&…...
独立开发者如何利用Taotoken Token Plan,以更低成本启动AI项目
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 独立开发者如何利用Taotoken Token Plan,以更低成本启动AI项目 对于独立开发者或小型团队而言,启动一个集成…...
危急时刻的六条基本安全提示
人机协作,AI模型:Deepseek 仅供参考 危急时刻的六条基本安全提示 以下内容仅为通用性安全建议,供在紧急情况下保持冷静、保护自身安全时参考。所有建议均基于常理和公共安全常识,不包含任何具体操作细节或可能被不当使用的信息…...
UE5 Cesium项目里,如何把默认的飞行Pawn换成建筑漫游Pawn?保姆级迁移教程
UE5 Cesium项目建筑漫游Pawn迁移实战:从飞行模式到精细化浏览的完整指南当你在UE5中结合Cesium插件构建数字孪生场景时,DynamicPawn提供的全球飞行体验令人印象深刻。但当视角聚焦到单体建筑或室内空间时,那种仿佛操控无人机般的操作方式就显…...
Windows安卓应用安装终极指南:5分钟快速配置跨平台应用体验
Windows安卓应用安装终极指南:5分钟快速配置跨平台应用体验 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为在Windows电脑上无法直接安装安卓应用而烦…...
你的差异基因结果可靠吗?用MetaVolcanoR给多个GEO数据集做一次‘交叉验证’吧
你的差异基因结果可靠吗?用MetaVolcanoR给多个GEO数据集做一次"交叉验证"当你在GEO数据库中下载了三个肺癌研究的差异表达结果,却发现三个DEG列表的重叠基因不到20%——这种令人沮丧的场景每天都在全球实验室上演。单项研究的差异分析结果就像…...
