Springboot如何利用模板,快速生成word文档?

news/2025/2/24 13:35:18/文章来源:https://www.cnblogs.com/phzmxw/p/18566434
前言
大家好,我是小徐啊。我们在使用SpringBoot开发的时候,有时候会遇到需要生成word文档的情况。一般情况下,就是将一些数据填充到word文档里面。其实Java是有开源的第三方jar包的。今天,小徐就来介绍下如何在SpringBoot里面生成word文档。
如何设置
首先,我们需要在pom.xml文件里面,引入deepoove的依赖,如下所示。
0
<dependency> <groupId>com.deepoove</groupId> <artifactId>poi-tl</artifactId> <version>1.10.0</version> </dependency>
然后,我们需要自己写一个WordUtil类,这样做是为了方便,当然也可以不写工具类。这里,主要是写好word模板的路径,生成word的路径,然后,再在里面填充对应的参数和参数值,比如这里填充了today这个参数和参数值。其他的写法就参考如下代码即可。
0
public class WordUtil { public String insertWord(SecurityDailyInfoVO securityDailyInfoVO,String serviceDirectoryPath,String out){ try { String today = DateUtil.daFormat(securityDailyInfoVO.getCreateTime()); Map map = new HashMap<String, Object>(); map.put("today", today); XWPFDocument document = null; InputStream inputStream = new FileInputStream(serviceDirectoryPath+ File.separator+"temp.docx"); document = new XWPFDocument(inputStream); //document.enforceReadonlyProtection("123", HashAlgorithm.md5); //document.enforceFillingFormsProtection("456", HashAlgorithm.sha512); String outPath = out + File.separator + "SecurityDailyReport_" + today + ".docx"; XWPFTemplate.compile(document).render(map).writeToFile(outPath); return outPath; } catch ( IOException e) { e.printStackTrace(); return null; } } }
最后,在word的模板里面,把需要填充的地方,输入参数,用双大括号括起来,这样到时候就可以自动填充数据了。是不是很方便?
0
总结
好了,今天就讲到这儿啦。以上就是在springboot里面生成word文档的操作方法了,感谢你的阅读。
欢迎点赞,我将在点赞的同学中随机抽取一名送上微信红包!
 
如果有对Java入门开发相关的问题,可关注我的公众号【Java入门学习】,加我好友,我会持续更新Java相关的分享!
获取更多资源【软件资源、历年软考真题、核心面试知识、阿里Java开发手册、linux常用命令】,也可关注公众号!
0
欢迎访问我的个人网站:https://idea-tips.com/
往期推荐:

1.navicat如何导出数据?附navicat15安装包

2.一个程序员的水平能差到什么程度?有时候,差只是表象...

3.为什么很多老程序员不建议编程新手用IDE?

4.IDEA如何快速选中一个词、一行、一个方法?

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

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

相关文章

HCIA-03 常用协议 ARP TCP UDP ICMP

主要介绍了常用协议和IP协议的基础知识, 包括TCP/UDP协议的工作原理、ARP地址解析协议的作用、ICMP协议用于网络控制和查询的信息传递等。 重点讲述了TCP协议的三次握手建立连接、数据传输与四次挥手断开连接的过程 以及IP协议在网络层实现跨广播域通信的基本原理。 此外,还提…

DDD之理解复杂度、尊重复杂度、掌控复杂度

本文书接上回《懂了这个道理,人月神话不再是神话!》,关注公众号(老肖想当外语大佬)获取信息:最新文章更新;DDD框架源码(.NET、Java双平台);加群畅聊,建模分析、技术交流;视频和直播在B站。关注公众号一定要星标,以及时获得最新推送。 背景 关于“复杂度”我在系列…

树的遍历顺序及其应用

树的遍历顺序及其应用 一、DFS 序 DFS 序就是以 DFS 的方式,记录每一个节点第一次被访问的顺序,这种顺序形成一个形成一个长度为 \(n\) 的序列。主要被用来维护子树信息。有以下特点:对于任意一个点来说,其子树里所有点的 DFS 序是连续的,具体来讲, \(x\) 的子树的所有结…

视野修炼-技术周刊第111期 | 读文件 API 性能对比

① Node.js 与 Bun 读取文件速度对比 ② 2024 HTML现状调研 ③ Viselect - 直观的 DOM 选择 ④ fraction.js - 精确的十进制运算库 ⑤ npmpackage.info - 在线查看 npm 包相关概览信息 ⑥ dive - 展示 docker 镜像里层的内容 ⑦ lcl.host - 一键本地生SSL证书 ⑧ 12 个现代CSS技…

[CPP]继承

继承友元关系不能继承,也就是说基类友元不能访问子类私有和保护成员。 基类定义了static静态成员,则整个继承体系里面只有一个这样的成员。无论派生出多少个子类,都只有一个static成员实例。什么是继承 继承是面向对象编程(OOP)中的一个重要概念,它是一种创建新类(称为派…

MIT 操作系统6.S081第一章

1.1进程和内存 fork 父进程中 fork 返回 子进程的PID 子进程中 fork 返回 0 exit exit会让当前进程停止执行并释放资源(包括内存和打开的文件) 通常: 0 表示 成功 1 表示 失败 wait wait 系统调用并返回当前进程已退出或杀死的进程PID,并将子进程的状态复制到wait的地址 另…

TIA 做交通信号灯控制练习1

练习一下交通信号灯程序,从简单的功能做起。红绿黄等交替亮起。使用TIA编程,做成FB。新建一个TIA项目,选择一个1200CPU. 1. 新建一个FB,在新建的FB,先配置输入输出变量。 2. 在FB写下面的程序3. 在WINCC上建立1200?1500的变量连接,连接博图模拟器,建立变量。4.WINCC画…

Nuxt.js 应用中的 webpack:change 事件钩子

title: Nuxt.js 应用中的 webpack:change 事件钩子 date: 2024/11/24 updated: 2024/11/24 author: cmdragon excerpt: 通过webpack:change钩子,开发者可以知道哪些文件被修改,并可以进行适当的处理,比如重新加载相关模块,或更新用户界面等。 categories:前端开发tags:N…

HCIA-04 IP层及IP地址规划

详细介绍了IP地址规划的相关知识,包括IP地址的基本概念、格式、版本、头部字段、服务类型、分片机制、生存时间(TTL)以及IP地址分类等。特别强调了子网划分的重要性及其应用场景,通过实例演示了如何进行子网划分计算,包括子网数量、IP地址数量及每个子网的地址范围等。此外…

【MX-S7】梦熊 NOIP 2024 模拟赛 3 SMOI Round 2(同步赛)

【MX-S7】梦熊 NOIP 2024 模拟赛 3 & SMOI Round 2(同步赛)\(T1\) luogu P11323 【MX-S7-T1】「SMOI-R2」Happy Card \(20pts\)发现可以把「炸弹」也看做「三带一」。先使用「三带一」带走原用于出「单牌」的牌,若「三带一」还有剩余则尝试带走原用于出「对子」的牌,否…

Arthas的安装与使用

Arthas的安装与使用 简介Arthas是一款线上监控诊断产品,通过全局视角实时查看应用load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常、监测方法执行耗时,类加载信息等,大大提升了线上问题排查效率。下载 …

vxe-table 设置单元格对齐方式,左对齐、右对齐

官网:https://vxeui.com/<template><div><vxe-tableborderheader-align="center"align="left":data="tableData"><vxe-column type="seq" width="70"></vxe-column><vxe-column field=&q…