java动态生成word文档(poi-tl)

poi-tl:基于Apache POI的轻量级Word模板引擎 阅读详情
AI摘要

POI-TL是基于Apache POI的Word模板引擎,结合简单模板语法与Java代码,可快速生成复杂Word文档。其具有基于模板和数据模型生成文档、支持多种元素、语法简单、性能高等特性。通过添加依赖、创建模板、编写代码等步骤,能高效完成文档生成。

目录

主要特性

快速入门

1. 添加依赖

2. 创建 Word 模板

3. 编写 Java 代码

4. 生成word文件

总结


官网地址:中文文档地址

源码地址:https://github.com/Sayi/poi-tl

POI-TL (POI Template Language) 是一个基于 Apache POI 的 Word 模板引擎,它通过简单的模板语法和 Java 代码结合,可以快速生成复杂的 Word 文档。

主要特性

  • 基于 Word 模板 + 数据模型生成文档

  • 支持文本、图片、表格、列表等元素

  • 模板语法简单易学

  • 高性能,底层使用 Apache POI

快速入门

1. 添加依赖

<dependency>
  <groupId>com.deepoove</groupId>
  <artifactId>poi-tl</artifactId>
  <version>1.12.2</version>
</dependency>

2. 创建 Word 模板

创建一个名为 template.docx 的 Word 文档,内容如下:

{{title}}

尊敬的{{customer.name}}:

感谢您选择我们的服务!以下是您的订单详情:

订单编号:{{order.id}}
订单日期:{{order.date}}
订单金额:{{order.amount}}

{{?vip}}
您是我们的VIP客户,享受9折优惠!
{{/vip}}

3. 编写 Java 代码

public static void main(String[] args) throws Exception {
        // 准备数据模型
        Map<String, Object> data = new HashMap<>();
        data.put("title", "订单确认书");

        Map<String, Object> customer = new HashMap<>();
        customer.put("name", "张三");
        data.put("customer", customer);

        Map<String, Object> order = new HashMap<>();
        order.put("id", "ORD20230001");
        order.put("date", "2023-05-18");
        order.put("amount", "¥1200.00");
        data.put("order", order);

        data.put("vip", true);

        // 加载模板并渲染
        XWPFTemplate template = XWPFTemplate.compile("C:\\Users\\wangbingbing\\Desktop\\template.docx").render(data);

        // 输出到文件
        FileOutputStream out = new FileOutputStream("C:\\Users\\wangbingbing\\Desktop\\output.docx");
        template.write(out);
        out.close();
        template.close();
    }

4. 生成word文件

生成的文件内容如下:

订单确认书

尊敬的张三:

感谢您选择我们的服务!以下是您的订单详情:

订单编号:ORD20230001
订单日期:2023-05-18
订单金额:¥1200.00

您是我们的VIP客户,享受9折优惠!

总结

POI-TL 提供了一种简单高效的方式来生成复杂的 Word 文档,通过模板与数据分离的方式,大大提高了开发效率和可维护性。

Word模板引擎poi-tl 标签 1. 文本 2. 图片 3. 表格 4. 列表 5. 嵌套 6. 区块对 ◆ SpingEL 2. 单系列图标 3. 多系列图标 4. 组合图表 ◆ 配置 1. 标签前后缀 2. 标签类型 3. 标签匹配值 4. 标签值计算 5. SpringEL 6. 数据模型序列化 7. 错误处理 8. 模板生成模板 9. 无模板创建文档 10. 日志 ◆ 插件 1. 表格行循环 2. 表格列循环 3. 动态表格 4. 批注 5. 插入附件 6. 代码高亮 7. Markdown ◆ 自定义插件 - 定义插件 阅读详情

相关推荐

基于Apache POI的poi-tl模板引擎:Java动态生成Word文档的声明式解决方案

在Java企业级应用开发中,动态生成格式规范的Word文档(如合同、报告、通知单)是一项常见需求。传统方式使用Apache POI等库进行硬编码操作,存在代码臃肿、样式与逻辑耦合度高、维护成本大等问题。模板引擎技术通过将文档样式设计与数据逻辑分离,提供了更优雅的解决方案。其核心原理是预先在Word中设计包含占位符的模板文件,程序运行时将数据模型与模板合并渲染,自动生成最终文档。这种声明式方法极大提升了开发效率和系统可维护性,尤其适用于需要频繁调整模板样式的场景。poi-tl作为基于Apache POI构建的

weixin_34302798的博客 421

Poi-tl生成docx文档【SpringBoot】

在开发过程中当遇到系统需要导出一些word文档类型的报表文件,且这些文档多用来展示数据,具有相同的逻辑,可以考虑使用poi-tl填充word模板的方法来生成word文档。

Aspiring_boy的博客 2086

Poi-tl导出word和合并word所需要的jar包

找到lib文件夹下的Spire.doc.jar并进行解压;然后在IDEA中创建一个新项目,依次点击“文件”(File),“项目结构”(Project Structure),“组件”(Modules),“依赖项”(Dependencies),再点击右方绿色“+”下的第一个选项“jar文件或路径”(JARs or Directories),找到解压后的Spire.doc.jar 文件,点击确认,将其导入到项目中。合并的工具jar下载地址。

qq_37329630的博客 581

Java使用poi-tl1.9.1生成Word文档的几个小技巧

本文将简单介绍poi-tl的相关知识,通过一个实际的案例实践,充分介绍如何利用poi-tl进行目标文档的生成,同时分享几个不同的office版本如何进行图表生成的解决方案

夜郎King的博客 2万+

Java中使用poi+poi-tl实现根据模板导出word文档

上面讲的是Excel的导出,如果是需要根据word文档的模板,比如根据数据库中数据或者其它数据源循环根据模板填充数据,可填充文字、图片、表格、图表等数据。

BADAO_LIUMANG_QIZHI的博客 5767

POI-TL-Plus:Java动态生成Word文档的可维护流水线方案

Word文档自动化生成是企业级Java系统中高频刚需,涉及学籍证明、实验报告、合规审计书等场景。其本质是将结构化数据按模板规则渲染为.docx文件,依赖模板引擎对EL表达式、循环块、条件判断及表格嵌套的健壮支持。传统方案如原生Apache POI编码冗长易错,JasperReports则与Java生态耦合过重;而POI-TL-Plus以‘模板即契约’理念重构,引入变量类型声明、运行时校验、安全沙箱与CI/CD就绪设计,显著提升文档生成的可测性、可维护性与交付稳定性。本文聚焦该工具在真实教育与合同系统中的落地

weixin_33417488的博客 251

Java动态生成Word文档完全指南:poi-tl模板引擎实战与避坑

在企业级应用开发中,动态生成Word文档是一项高频需求。Java后端开发者常需将数据库中的结构化数据填充至固定版式的合同、报告或证书模板中,同时还要应对循环表格、条件段落与图片插入等复杂场景。Apache POI作为底层Office操作库功能强大,但原生API在模板渲染时代码量大、维护成本高。poi-tl作为基于POI的模板引擎,通过{{name}}、{{#list}}、{{$image}}等简洁语法实现数据与格式分离,不破坏原模板样式,大幅提升开发效率。本文面向Java开发与报表导出场景,系统讲解技术选型

weixin_30522983的博客 288

微信DAT图片恢复全攻略:从文件路径到批量解密(附最新工具下载)

本文详细介绍了微信DAT图片恢复的全过程,从文件路径定位到批量解密操作,帮助用户高效恢复加密存储的图片。文章涵盖新旧版本微信的存储结构差异,推荐使用专业解密工具进行批量转换,并提供了提升恢复成功率的实用技巧和常见问题解决方案。

weixin_29325007的博客 455

Java Poi-tl操作Word文档,插入文本和图片

前言:poi-tl(poi template language)是Word模板引擎,基于Microsoft Word模板和数据生成新的文档。详细使用见官方文档 1、pom.xml引入依赖 <dependency> <groupId>com.deepoove</groupId> <artifactId>poi-tl</artifactId> <version>1.8.2</version> </d

dava_zhang的博客 3829

Xilinx SDK调试与FPGA硬件验证全流程解析

本文详细解析了从Vivado导出硬件到Xilinx SDK进行调试与FPGA硬件验证的全流程。重点阐述了正确导出包含bitstream的硬件平台、创建合适的SDK工程、配置Debug会话以编程FPGA,并介绍了串口验证、自定义IP测试以及使用ILA进行软硬件联合调试的高级技巧,帮助开发者高效完成FPGA系统的软硬件协同开发与问题排查。

weixin_28327051的博客 311

Matplotlib之bar3d画3D柱状图

3D柱状图通常用于展示数据集中不同分类项的数据大小或数量。与普通的柱状图相比,3D柱状图更适合展示数据的三个维度 3D 柱状图 按行/列涂颜色 柱加阴影、描黑边 自定义座标轴名、刻度标签、范围

我走的每一步都算数 1121

java根据模板动态生成word文档带表格

detailMap.put("technical_parameter", "技术参数"+i);detailMap.put("product_type", "二级分类1");detailMap.put("product_type", "二级分类2");detailMap.put("sub_type", "工程验收装备");detailMap.put("title", "商品"+i);

m0_55533068的博客 793

脉冲变压器电感选型参数,结构原理,工艺与注意问题总结

脉冲变压器电感简称脉冲变压器,是一种特殊类型的变压器,主要用于处理脉冲信号。它的主要特性是能够在短时间内承受高电压和大电流。脉冲变压器主要用于开关电源、脉冲功率放大、雷达脉冲调制等领域。本文对脉冲变压器的工作原理,结构特点,工艺流程,选型参数及设计注意事项进行总结。

fydar的博客 1342

Java读取resources里面的文件及poi-tl 生成word文档

Java读取resources里面的文件。

qq_42772400的博客 1015

Android 15.0 首次开机默认授予app运行时权限(去掉运行时授权弹窗)

在15.0的系统rom产品定制化开发中,在6.0以后对于权限的申请,都需要动态申请,所以会在系统首次启动后,在app的首次运行时, 会弹出授权窗口,会让用户手动授予app运行时权限,在由于系统产品开发需要要求默认授予app运行时权限,不需要用户默认授予运行时弹窗,所以需要在首次开机默认授予所有app运行时权限

安卓兼职framework和app工程师的博客 1204

Go语言爬虫:chromedp 的详细使用

chromedp 是 Go 语言中无头浏览器自动化的终极利器。它能驱动真实的 Chrome 浏览器,处理 JavaScript 渲染、复杂交互和反爬虫机制

数据知道的博客 4492

java 导出word,java根据提供word模板导出word文档

此处不做api介绍,只做基本概念介绍,不需要的可以跳过了!官网poi-tl(poi template language)是Word模板引擎,使用Word模板和数据创建很棒的Word文档。方案移植性功能性易用性Poi-tlJava跨平台Word模板引擎,基于Apache POI,提供更友好的API低代码,准备文档模板和数据即可Apache POIJava跨平台Apache项目,封装了常见的文档操作,也可以操作底层XML结构Apache POI Word快速入门Freemarker。

qq_53900384的博客 219

Yocto开发讲解系列 - 总目录

Yocto开发讲解系列总纲Yocto开发专栏前言

fulinux的博客 3万+

word poi-tl 图表功能增强,插入图表折线图、柱状图、饼状图

目前支持的图表类型有饼图、柱形图、面积图、折线图、雷达图等同时支持添加到图表一起渲染。

Yweir的博客 2926

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【Java】poi-tl 使用Word模板渲染动态表格

poi-tl 是一个基于 Apache POI 和 FreeMarker 的 Java 模板引擎,可以用于动态生成 Word、Excel、PowerPoint 等文档。使用 poi-tl 可以方便地将数据填充到模板中,生成符合要求的文档。poi-tl官方文档地址:http://deepoove.com/poi-tl/#_%E7%89%88%E6%9C%AC。

AnnieRabbit的博客 5787

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

SpringBoot+Poi-tl根据Word模板动态生成word(含动态行表格)

" data-options="iconCls:'icon-save'">导出word(包含动态表格)</a>(UNIT.charAt(j) == ‘亿’ || UNIT.charAt(j) == ‘万’ || UNIT.charAt(j) == ‘元’转载https://blog.youkuaiyun.com/qq_26383975/article/details/111561540。/* 重点:后端返回的响应类型为 arraybuffer,不是常用的 blob *//* 文件下载 */-- word导出 -->

s_156的博客 2916

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

排名第一的word模板引擎,到底有多神仙

hello大家好,今天我要给大家推荐一个非常棒的Word专用的模板引擎,Poi-tl(Poi-template-language)。这款引擎基于Apache Poi,可以根据用户输入的内容直接生成相应的word文档,很是方便。前言作为一名开发者,模板引擎,大家都应该用过吧,模板中有一系列占位符,模板+数据,传递给模板引擎,会输出一份新的文档,如下图,模板可以启动重用的作用。常见的模板基本上都是文本格式的,比如 html 格式的、text 格式的,这种格式的模板处理起来相对比较容易,对应的模板引擎有很多,比如

tuonioooo 2208

Java报表生成利器 Poi-tl

本文介绍了Poi-tl(poi template language)这一基于Apache POI的Word模板引擎。相比原生POI操作Word的复杂方式,Poi-tl提供了更友好的API,支持通过模板和数据轻松生成Word文档。文章通过两个实战示例展示了其核心功能:表格行循环渲染和HTML转Word(包含LaTeX公式)。Poi-tl支持自定义插件,开发者只需简单配置即可实现复杂排版需求。该工具显著降低了Word报表开发难度,使业务人员也能参与模板设计,实现高效分工。完整源码和官方教程地址已在文中提供。

全栈实战心得 × 前沿动态追踪,输出一线落地经验与深度行业洞察,与同频开发者共进化。 769

用一天时间告诉你poi-tl 根据word模板 图表 表格

由于在开发功能需求中,word文档需要根据数据动态生成图表,不同的数据类型生成不同的图表信息,而word模版引擎原有功能只能做替换,不满足需求;poi-tl 是一个基于Apache POI的Word模板引擎,也是一个免费开源的Java类库,你可以非常方便的加入到你的项目中;目前选择的poi-tl的模版引擎,在原有的基础上新增自定义插件来实现功能。图片{{@imageUrl}}文本 {{value}}表格{{#table}}列表{{*list}}

qq_37246043的博客 408

POI-tl(poi-template-language)-word模板替换官方文档

POI-word模板替换官方文档

兴趣是最好的老师 822
上一篇: 【MYSQL】事务
下一篇: centos7安装minio集成spring boot
睡、不辜负床
博客等级 码龄7年 9粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值