java通过poi-tl导出word实战详细步骤
文章目录
- 与其他模版引擎对比
- 1.引入maven依赖包
- 2.新建Word文档exportWprd.docx模版
- 3.编写导出word接口代码
- 4.导出成果
poi-tl是一个基于Apache POI的Word模板引擎,也是一个免费开源的Java类库,你可以非常方便的加入到你的项目中,并且拥有着让人喜悦的特性。中文网站
- 可以通过word模版引擎渲染文本、图片、表格、列表数据
- 可以渲染条形图(3D条形图)、柱形图(3D柱形图)、面积图(3D面积图)、折线图(3D折线图)、雷达图、饼图(3D饼图)、散点图等图表渲染
- 可以根据条件隐藏或者显示某些文档内容(包括文本、段落、图片、表格、列表、图表等)
- 可以根据集合循环某些文档内容(包括文本、段落、图片、表格、列表、图表等)
- 支持设置书签,文档内锚点和超链接功能
- 模板即样式,同时代码也可以设置样式
- 插件化设计,在文档任何位置执行函数
与其他模版引擎对比

1.引入maven依赖包
(1)引入poi-tl包
<dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.2</version>
</dependency>
(2)因为poi-tl依赖于Apache POI5.2.2+,所以必须映入poi依赖包
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.2</version>
</dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.2</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>4.1.2</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>5.2.2</version><scope>compile</scope>
</dependency>
(3)继续 引入poi-tl需要的commons-io与log4j-api依赖包(必须引入,否则会报错,报错如下)
<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.11.0</version>
</dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.14.1</version>
</dependency>
不引入会导致报错,报错如下:

2.新建Word文档exportWprd.docx模版
在静态资源目录下resources/static/templates新建exportWord.docx,编写以下模版内容:

3.编写导出word接口代码
@GetMapping("/exportWord")public void exportWord(HttpServletResponse response) throws FileNotFoundException {//存放数据,也就是填充在word里面的值Map<String, Object> params = new HashMap<>();params.put("title","测试使用poi-tl模版导出word");params.put("ceshi","测试使用poi-tl模版导出word");params.put("name","张三");params.put("text","知之为知之不知为不知");//模板路径// String templatePath = "E:\\demo\\word.docx";// 或模板在静态资源的相对路径File rootFile = new File((ResourceUtils.getURL("classpath:").getPath()));File templateFile = new File(rootFile, "/static/templates/exportWord.docx");//jar包获取不到文件路径`//URLDecoder.decode() 解决获取中文名称文件路径乱码String templatePath = URLDecoder.decode(templateFile.getPath());//生成文件名String fileName = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + "_" + System.currentTimeMillis();// 导出woldtry {// 导出Word文档为文件XWPFTemplate template = XWPFTemplate.compile(templatePath).render(params);// 将导出的Word文件转换为流response.setContentType("application/octet-stream");response.setHeader("Content-disposition","attachment;filename=\""+fileName+".docx"+"\"");// HttpServletResponse responseOutputStream out = response.getOutputStream();BufferedOutputStream bos = new BufferedOutputStream(out);template.write(bos);bos.flush();out.flush();// 最后不要忘记关闭这些流。PoitlIOUtils.closeQuietlyMulti(template, bos, out);} catch (Exception e) {System.out.println("导出Word文档时出现异常:" + e.getMessage());}}
4.导出成果

相关文章:
java通过poi-tl导出word实战详细步骤
文章目录 与其他模版引擎对比1.引入maven依赖包2.新建Word文档exportWprd.docx模版3.编写导出word接口代码4.导出成果 poi-tl是一个基于Apache POI的Word模板引擎,也是一个免费开源的Java类库,你可以非常方便的加入到你的项目中,并且拥有着让…...
将自签证书添加到Java的可信任证书列表中
文章目录 前言将自签证书添加到Java的可信任证书列表中添加到Java的可信任证书列表中 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。 而且听说点赞的人每天的运气都不会太差,实…...
一文清晰了解CSS——简单实例
首先一个小技巧: 一定要学会的vsCode格式化整理代码的快捷键,再也不用手动调格式了-腾讯云开发者社区-腾讯云 (tencent.com) CSS选择器用于选择要应用样式的HTML元素。常见的选择器包括: 类选择器:以.开头,用于选择具…...
工程师 - 什么是XML文件
XML(eXtensible Markup Language,扩展标记语言)文件是一种使用自定义标签来定义对象及其内部数据的纯文本文件。XML设计的目的是既易于人类阅读又易于机器解析,因此它在不同系统和应用之间传输和存储数据时非常有用。 XML的主要特…...
[AI 大模型] 阿里巴巴 通义千问
文章目录 [AI 大模型] 阿里巴巴 通义千问简介模型架构发展新技术和优势示例 [AI 大模型] 阿里巴巴 通义千问 简介 阿里巴巴的 通义千问 是由阿里云开发的一款大型语言模型,旨在为用户提供高效、智能的自然语言处理服务。 通义千问能够处理多种语言输入,…...
关于无法定位程序输入点 SetDefaultDllDirectories于动态链接库KERNEL32.dll 上 解决方法
文章目录 1. ERNEL32.dll 下载2. 解决方法 👍 个人网站:【 洛秋小站】 1. ERNEL32.dll 下载 Windows 7 在安装postman时报错缺少动态链接库,提示缺少.NET Framework,这是因为本地缺少相应的dll文件导致的,这时就需要下载ERNEL32.dll文件,在解…...
轻松创建对象——简单工厂模式(Java实现)
1. 引言 大家好,又见面了!在上一篇文章中,我们通过Python示例介绍了简单工厂模式,今天,我们继续深入这个话题,用Java来实现简单工厂模式。 2. 什么是简单工厂模式 简单工厂模式(Simple Facto…...
Docker Dockerfile:构建与优化
Docker Dockerfile:构建与优化 简介 Docker 是一种广泛使用的容器化技术,它允许开发人员将应用程序及其依赖环境打包到一个可移植的容器中。Dockerfile 是 Docker 中用于自动化容器镜像构建的脚本文件。本文将详细介绍 Dockerfile 的基本结构、指令使用…...
开源项目有哪些机遇与挑战?
随着全球经济和科技环境的快速变化,开源软件项目的蓬勃发展成为了开发者社区的热门话题。越来越多的开发者和企业选择参与开源项目,以推动技术创新和实现协作共赢。本文将从开源项目的发展趋势、参与开源的经验分享以及开源项目的挑战三个方面进行探讨。…...
利用【Python】【线性规划】优化工厂生产:实现智能资源配置与利润最大化的现代解决方案
目录 1. 问题背景和描述 1.1 问题背景 1.2 问题描述 2. 数学模型的建立 2.1决策变量 2.2 目标函数 2.3 约束条件 2.4 数学模型总结 3. 使用Python解决线性规划问题 3.1 导入必要的库 3.2 定义目标函数系数 3.3 定义不等式约束矩阵和向量 3.4 定义变量的边界 非负…...
【spark】Exception in thread “main“ ExitCodeException exitCode=-1073741701
在window上运行spark程序写到本地文件的时候报错。 val rdd sc.sparkContext.parallelize(list)val arr rdd.collect()arr.foreach(println)rdd.saveAsTextFile("test1")sc.close()错误信息: zhangsan lisi wangwu Exception in thread "main" ExitCode…...
数学建模美赛经验小结
图片资料来自网络所听讲座,感谢分享!...
206. 反转链表 (Swift 版本)
题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 解题 /*** Definition for singly-linked list.* public class ListNode {* public var val: Int* public var next: ListNode?* public init() { self.val 0; self.…...
海狐外卖O2O商城系统:技术架构与运营模式的深度解析
摘要: 本文深入探讨了海狐外卖O2O商城系统的技术架构、功能特性以及运营模式。海狐外卖作为一款专注于细分市场领域的外卖餐饮解决方案,不仅拥有先进的技术栈支持,还通过丰富的系统插件和灵活的运营模式,为商户和用户提供高效、便…...
14-31 剑和诗人5 - 使用 AirLLM 和分层推理在单个 4GB GPU 上运行 LLama 3 70B
利用分层推理实现大模型语言(LLM) 大型语言模型 (LLM) 领域最近取得了显著进展,LLaMa 3 70B 等模型突破了之前认为可能实现的极限。然而,这些模型的庞大规模给其部署和实际使用带来了巨大挑战,尤其是在资源受限的设备上,例如内存…...
风景园林工程设计乙级资质业绩要求案例分析
项目数量与规模 数量要求:企业需要提供一定数量的已完成风景园林设计项目案例,这个数量可能依据具体政策而有所不同,但通常需要完成多个项目以展示设计团队的综合能力。 规模要求:项目规模需达到乙级资质标准所规定的级别&#…...
无人机之飞行规划与管理篇
无人机飞行规划与管理是确保无人机安全、高效且符合法规的运行的关键步骤。这一过程包括了对飞行任务的详细安排、航线的设定以及风险的评估和管理。下面简述这一过程的主要环节: 一、飞行目的和任务确定 在规划之初,必须明确无人机的飞行目的…...
realsense D435l+mid360标定
目录 一、安装realsense环境 二、获取realsense D450L相机内参 三、标定雷达和相机 1.下载livox_camera_calib 2.修改配置参数 3.使用fastlio生成点云 4.标定 一、安装realsense环境 git clone https://github.com/IntelRealSense/librealsense.git cd librealsense //更…...
深度学习中的正则化技术 - 数据集增强篇
序言 在机器学习与深度学习的广阔领域中,数据集的质量与规模往往是决定模型性能的关键因素之一。然而,现实世界中高质量、标注完善的数据集往往稀缺且获取成本高昂,这成为了制约算法进步的一大瓶颈。为了缓解这一问题,数据集增强…...
【Docker系列】Docker 镜像源:优化你的容器化开发流程
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
