尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

使用POI-TL组件按模板导出word文档

使用POI-TL组件按模板导出word文档
📅 发布时间:2026/6/20 12:04:29

使用POI-TL组件按模板导出word文档

效果展示:

软件说明书付款通知书模板简历

以及更多的效果,可以访问官方文档示例 ····> https://deepoove.com/poi-tl/示例

依赖引入:

<dependencies><!-- poi-tl 核心依赖 --><dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.2</version></dependency><!-- Apache POI 核心依赖 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.5</version></dependency><!-- POI OOXML 支持 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.5</version></dependency><!-- POI OOXML Full 支持(处理复杂文档) --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-full</artifactId><version>5.2.5</version></dependency><!-- POI Scratchpad(处理旧版 Word 文档) --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>5.2.5</version></dependency>
</dependencies>

编写JAVA导出工具类:

import com.deepoove.poi.XWPFTemplate;
import lombok.extern.slf4j.Slf4j;import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.Map;/*** poi-tl文旦渲染导出工具* 唐泽齐* @See {https://www.cnblogs.com/tangzeqi}*/
@Slf4j
public class PoitlUtils {/*** 导出渲染后的模板文档** @param templatePath 模板路径,常放于项目resources下如:template/xxx.docx* @param outName      导出文件名,需要与模板文件类型一致* @param data         写入模板的数据,参考 @See {https://deepoove.com/poi-tl}* @param response     流操作,一般来自Controller层Http接口的入参接收*/public static void export(String templatePath, String outName, Map<String, Object> data, HttpServletResponse response) {XWPFTemplate template = null;OutputStream out = null;try {// 设置响应头response.setContentType("application/octet-stream");String fileName = URLEncoder.encode(outName, "UTF-8");response.setHeader("Content-disposition", "attachment;filename=\"" + fileName + "\"");// 编译模板template = XWPFTemplate.compile(ClassLoader.getSystemResourceAsStream(templatePath)).render(data);// 获取输出流out = response.getOutputStream();// 写入响应流
            template.write(out);out.flush();} catch (Exception e) {log.error("导出文档失败", e);throw new RuntimeException("导出文档失败", e);} finally {// 关闭资源if (template != null) {try {template.close();} catch (IOException e) {log.error("关闭模板失败", e);}}// 注意:不要关闭 response 的 OutputStream// Servlet 容器会自动管理这个流
        }}}

调用工具:

PoitlUtils.export("template/XXXX.docx",date+"XXXX.docx",map,response);

代码说明:

一.模板位置获取

ClassLoader.getSystemResourceAsStream(templatePath)

用于查找模板在项目中的位置,假设有项目目录结构如下:

src/main/java/com/example/MyClass.javaresources/templates/template.txt

在工具中:

// 这样可以找到 template.txt
InputStream is1 = this.getClass().getResourceAsStream("/templates/template.txt");// 这样找不到,因为会从 com/example/ 目录下开始查找
InputStream is2 = this.getClass().getResourceAsStream("templates/template.txt");// 使用系统类加载器从 classpath 根目录查找
InputStream is3 = ClassLoader.getSystemResourceAsStream("templates/template.txt");

如果你想要更可靠地加载资源,建议使用:

InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(templatePath);

因为:

  1. 它不受当前类的包位置影响
  2. 在复杂的类加载器环境中(如 Web 应用、OSGi 等)更可靠
  3. 可以正确处理从 JAR 文件中加载资源的情况

二.模板渲染数据

https://deepoove.com/poi-tl/#_标签,https://deepoove.com/poi-tl/#_引用标签当然还可以自定义,参考https://deepoove.com/poi-tl/#_配置,以及更深层次自定义https://deepoove.com/poi-tl/#_插件

 

相关新闻

  • 语音文字图片工具箱微信小程序:多功能工具与高效变现解决方案
  • 酷鸭写真分销版小程序系统:AI 驱动的写真变现工具
  • 天天享赚微信小程序:流量主与猜成语结合的变现工具详解

最新新闻

  • Kali Linux安装配置Burp Suite专业版完整指南
  • 2026年6月最新江诗丹顿中国官方售后服务电话地址热线及客服网点 - 江诗丹顿服务中心
  • 2026 年 6 月最新腕表干货!万国全大陆官方正规维修门店地址完整公示,全国统一售后热线同步全新上线 - 万国中国服务中心
  • 天津名包回收机构实地测评:5家店报价服务全方位对比,看完再卖! - 讯息早知道
  • 2026年6月最新劳力士中国官方售后热线服务电话客户地址网点 - 劳力士服务中心
  • 2026年大平层装修深度测评:如何为你的改善型住宅匹配最佳方案? - 速递信息

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号