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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/49272.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(8) ubuntu ROS 安装

文章目录 安装流程1. 进入ros官网2. 根据自己ubuntu系统选择版本&#xff08;我是20.04的ubuntu&#xff09;3.根据流程开始安装3.1 设置sources.list 4.验证ros5.安装rosdep 安装流程 1. 进入ros官网 https://www.ros.org/ 2. 根据自己ubuntu系统选择版本&#xff08;我是2…

微信小程序反编译工具安装【PC端程序包详解】

文章目录 **准备工具****第一步&#xff1a;配置反编译工具****第二步&#xff1a;解密小程序包****第三步&#xff1a;准备Node.js环境****第四步&#xff1a;反编译小程序包****第五步&#xff1a;使用微信开发者工具** 微信小程序已经成为现代应用开发的一个重要部分。如果你…

基本的DQL语句-单表查询

一、DQL语言 DQL(Data Query Language 数据查询语言)。用途是查询数据库数据&#xff0c;如SELECT语句。是SQL语句 中最核心、最重要的语句&#xff0c;也是使用频率最高的语句。其中&#xff0c;可以根据表的结构和关系分为单表查询和多 表联查。 注意&#xff1a;所有的查询…

ORB_SLAM2 ORBSLAM2 Ubuntu20.04 ROS Noetic虚拟机镜像下载

下图是build.sh 和 build_ros.sh 编译完成截图&#xff1a; slam测试视频: orbslam2 ubuntu20.04 test 下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/16R7Pb6LjgR5SeoeBSZfgaQ?pwdu05r 提取码&#xff1a;u05r

【电源专题】结合锂电池相关资料和华为手机聊聊锂离子电池使用条件限制

在文章:【电源专题】锂电池的特点和工作原理 中我们讲到了一些关于锂电池种类和特点、工作原理等。但是对于锂离子电池使用条件限制却没有介绍,本文基于手机产商 锂离子电池使用条件-电池性能和应用介绍 | 华为官网 (huawei.com)提供的介绍文档再次深入学习锂离子电池的一些特…

FastAPI(六十七)实战开发《在线课程学习系统》接口开发--用户登陆接口开发

源码见&#xff1a;"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 接上一篇文章FastAPI&#xff08;六十六&#xff09;实战开发《在线课程学习系统》接口开发--用户注册接口开发。这次我们分享实际开发--用户登陆接口…

面试知识储备-redis和redission

1.redis的使用 引入依赖&#xff0c;自动注解redistemplate即可使用&#xff0c; 默认的redistemplate存入到redis中是字符流的形式&#xff0c;需要配置redistemplate&#xff0c; 如果不想配置&#xff0c;可以使用stringRedistemplate 可以使用string类型&#xff0c;但是…

JCR一区级 | Matlab实现GA-Transformer-LSTM多变量回归预测

JCR一区级 | Matlab实现GA-Transformer-LSTM多变量回归预测 目录 JCR一区级 | Matlab实现GA-Transformer-LSTM多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.【JCR一区级】Matlab实现GA-Transformer-LSTM多变量回归预测&#xff0c;遗传优化算法&#…

Linux中用shell脚本实现用户注册,登录,删除特点

一、说明 Linux中用shell脚本实现用户注册&#xff0c;登录&#xff0c;删除特点&#xff1a;用户和密码是单另储存在一个文件中&#xff0c;程序结束后&#xff0c;下次登录只要存储用denglu.sh 主目录 denglu1.sh 注册功能模块 denglu2.sh 登录功能模块 denglu3.sh…

C++ 双指针与链表

链表中的一些题目可以用双指针解决&#xff0c;我们将这些题目与其他双指针题目做了总结。 非链表题目 替换数字 给定一个字符串 s&#xff0c;它包含小写字母和数字字符&#xff0c;请编写一个函数&#xff0c;将字符串中的字母字符保持不变&#xff0c;而将每个数字字符替…

书生大模型实战营闯关记录----第二关:实现word_count统计文本中word频次

实现word_count统计文本中word频次 请实现一个wordcount函数&#xff0c;统计英文字符串中每个单词出现的次数。返回一个字典&#xff0c;key为单词&#xff0c;value为对应单词出现的次数。 Eg: Input: """Hello world! This is an example. Word coun…

每日刷题记录(codetop版)

7.21 7.22 7.23 复习7.21和7.22

读书的意义

文章目录 引言什么是热恋的人常做的事?写作是什么样的过程?什么是人生的转折点?人生的答案是什么?为什么很多人宁愿痛苦也不改变?回望过去常有的感受是什么?女人可以活成哪种样子?为什么不能轻言放弃?有没有做一件事“最完美的时刻”?如何生活得有滋有味?为什么要尝试…

Eureka在Kubernetes中的部署指南:微服务发现的艺术

标题&#xff1a;Eureka在Kubernetes中的部署指南&#xff1a;微服务发现的艺术 在当今快速发展的云计算时代&#xff0c;微服务架构因其灵活性和可扩展性而受到青睐。Eureka&#xff0c;作为Netflix开源的服务发现框架&#xff0c;已成为微服务架构中的一个关键组件。然而&am…

并发情况导致事务失效的场景

public void test(Pageable request){for (int i 0; i < 100; i) {//新建线程处理new Thread(() -> {userInfoService.testDemo();}).start();} } 这里创建多个线程模拟多并发场景 Transactional(rollbackOn Exception.class) public synchronized void testDemo() {…

一文入门SpringSecurity 5

目录 提示 Apache Shiro和Spring Security 认证和授权 RBAC Demo 环境 Controller 引入Spring Security 初探Security原理 认证授权图示​编辑 图中涉及的类和接口 流程总结 提示 Spring Security源码的接口名和方法名都很长&#xff0c;看源码的时候要见名知意&am…

海外IP代理科普:代理池有什么用?代理池大小的影响

在当今数字化时代&#xff0c;网络爬虫已经成为获取各类信息必不可少的工具。在大规模数据抓取中&#xff0c;使用单一 IP 地址或同一 IP 代理往往会面临抓取可靠性降低、地理位置受限、请求次数受限等一系列问题。为了克服这些问题&#xff0c;构建代理池成为一种有效的解决方…

控制欲过强的Linux小进程

控制欲强?视奸&#xff1f;普通人那才叫视奸&#xff0c;您是皇帝&#xff0c;天下大事无一逃过您的耳目&#xff0c;您想看什么就看什么&#xff0c;臣怀疑他在朋友圈私养兵士&#xff0c;囤积枪甲&#xff0c;蓄意谋反&#xff0c;图谋皇位啊&#xff01; 哈哈哈哈开个玩笑&…

使用GoAccess进行Web日志可视化

运行网站的挑战之一是了解您的 Web 服务器正在做什么。虽然各种监控应用程序可以在您的服务器以高负载或页面响应缓慢运行时提醒您&#xff0c;但要完全了解正在发生的事情&#xff0c;唯一的方法是查看 Web 日志。阅读日志数据页面并了解正在发生的事情可能需要花费大量时间。…

离散型以及连续型随机变量

目录 离散型随机变量 定义与性质 分布律 分布函数 连续型随机变量 定义与性质 概率密度函数 分布函数 多维随机变量 二维离散型随机变量 二维连续型随机变量 常见的连续型分布 离散型随机变量的概率质量函数和概率密度函数之间的关系是什么&#xff1f; 如何计算连…