当前位置: 首页 > news >正文

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

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 大语言模型-GPT-Generative Pre-Training
  • 通过 EMR Serverless Spark 提交 PySpark 流任务
  • 基于FPGA的以太网设计(3)----详解各类xMII接口
  • vite环境下使用bootstrap
  • 软件测试---测试需求分析
  • 通过libx246 libfaac转换推送RTMP音视频直播流
  • 【BUG】已解决:ValueError: All arrays must be of the same length
  • Flutter - 安卓一次打包不同包名的apk
  • springMVC是如何做url映射到controller的?
  • HTML(六)——HTML表单和框架
  • 数据结构从入门到精通二 ~ 数组和链表
  • 一线大厂java面试题
  • go语言Gin框架的学习路线(九)
  • 构造+位运算,CF 1901C - Add, Divide and Floor
  • mac M1安装换脸Roop教程及所遇到的问题
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • AHK 中 = 和 == 等比较运算符的用法
  • CentOS从零开始部署Nodejs项目
  • golang 发送GET和POST示例
  • HTTP 简介
  • input的行数自动增减
  • JavaScript函数式编程(一)
  • Lucene解析 - 基本概念
  • Python学习之路16-使用API
  • Selenium实战教程系列(二)---元素定位
  • Vue全家桶实现一个Web App
  • Web设计流程优化:网页效果图设计新思路
  • 服务器从安装到部署全过程(二)
  • 浮现式设计
  • 高程读书笔记 第六章 面向对象程序设计
  • 经典排序算法及其 Java 实现
  • 面试遇到的一些题
  • 前端路由实现-history
  • 一、python与pycharm的安装
  • 原生JS动态加载JS、CSS文件及代码脚本
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • ​如何在iOS手机上查看应用日志
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • # 飞书APP集成平台-数字化落地
  • #宝哥教你#查看jquery绑定的事件函数
  • (007)XHTML文档之标题——h1~h6
  • (1)Jupyter Notebook 下载及安装
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (C#)一个最简单的链表类
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (利用IDEA+Maven)定制属于自己的jar包
  • (每日一问)计算机网络:浏览器输入一个地址到跳出网页这个过程中发生了哪些事情?(废话少说版)
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)创业家杂志:UCWEB天使第一步
  • (转)大型网站架构演变和知识体系
  • (转)使用VMware vSphere标准交换机设置网络连接
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网