word 模板替换 poi-tl简单使用

springboot中使用poi-tl导出word(包含表格合并单元格)实例 一、背景 在业务开发过程中,遇到有需要生成包含表格的word文档,且一部分表格需要动态生成,且需要根据数据来合并单元格,最后呈现的方式如下图: 一开始想到的解决方案是通过freemarker来生成,但是需要转xml生成模板,过程比较复杂,因此,在查阅一些资料后,最终选择了poi-tl来实现。相比于freemarker,poi-tl导出word的好处在于可以直接使用word模板,比较直观,且比较好调整格式。 二、实现 1、引入jar包 <!-- word导出... 阅读详情

前言

工作中,需要给word 中的一些标签替换为 指定的数据;暂时来记录一下,并且网上找了一些 ,经典的  poi, itext 等,顺便找了几个比较好用的 尝试使用了下并记录下来
poi-tl

简介: 轻量, 主要针对word的模板引擎,提供了对word的丰富操作。
官网 其实官网很详细了,自己就照搬一下吧。

pom
 <dependency>
            <groupId>com.deepoove</groupId>
            <artifactId>poi-tl</artifactId>
            <version>1.9.1</version>
        </dependency>
代码示例

基本使用


// sourceDoc 模板文件
//obj模板需要替换的数据,map or 一个对象;对象的属性和 模板的标签相对应即可
  XWPFTemplate.compile(sourceDoc).render(Object obj/*可以是一个map 也可以是一个对象*/).writeToFile(targetDoc);
// 构建数据
// 文本类型
 TextRenderData a2 = Texts.of("o").style(Style.builder().buildFontFamily("wingdings").buildFontSize(28).build()).create();
 // 图片类型
PictureRenderData a3 = Pictures.ofLocal("F:/workSpaces/idea/springboot-test/poi-test/target/classes/test02.jpg").size(220, 220).create();
// 表格类型
TableRenderData a4 = Tables.create(
       Rows.of("标题", "备注").textColor("FFFFFF").textFontFamily("微软雅黑").textFontSize(16).center().bgColor("4472c4").create(),
       Rows.create("poi-tl", "介绍"));
// 列表类型       
 NumberingRenderData a5 = Numberings.of("周瑜", "孔明").create();
        
 Date a6 = new Date();
        
 templateData = new HashMap<String, Object>() {
            {
                put("title", "poi-tl demo");
                put("a1", "所见即所得");
                put("a2", a2); // 特殊字体
                put("a3", a3); // 图片
                put("a4", a4); // 表格
                put("a5", a5); // 列表
                put("a6", a6); //  使用spel表达式 格式化日期
            }
        };
        poiTlEntity = new PoiTlEntity("title", "a1", a2, a3, a4, a5, a6);


        // 使用map构建数据
        XWPFTemplate.compile(sourceDoc).render(templateData).writeToFile("newTest01.docx");
        // 使用对象构建数据
        XWPFTemplate.compile(sourceDoc).render(poiTlEntity).writeToFile("newTest01.docx");

模板
在这里插入图片描述
效果

在这里插入图片描述

spring SPEL 表达式配置使用

<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>4.3.6.RELEASE</version>
        </dependency>

   //配置使用 spring SPEL表达式
        Configure configure = Configure.builder().useSpringEL().build();
        // 使用map构建数据
        XWPFTemplate.compile(sourceDoc, configure).render(templateData).writeToFile("newTest01.docx");
        // 使用对象构建数据
        XWPFTemplate.compile(sourceDoc, configure).render(poiTlEntity).writeToFile("newTest01.docx");

以上简单入门 很容易上手,另外还有其他的比较好的api操作,官网api查看

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 ◆ 自定义插件 - 定义插件 阅读详情

相关推荐

【poi-tl 最新详细使用教程】

本文通过简单介绍几个示例 实现 word简单导出 ①maven引用 <dependency> <groupId>com.deepoove</groupId> <artifactId>poi-tl</artifactId> <version>1.9.0</version> </dependency> <dependency> <groupId&g...

下里巴人 2753

Java使用poi-tl实现对word文档的操作,替换文档里的参数以及插入网络图片等

公司项目最近需要使用操作word文档的功能,对于我来说也是第一次使用Java来操作word,于是在网上去寻找一些好的方法,无意中发现poi-tl这个工具,是真的好用,在此感谢作者,也希望大家多多支持作者。GitHub地址:https://github.com/Sayi/poi-tl 话不多说,开始正题:我这里的项目是对FTP上的word文档进行操作,实现的是对多个word文档先下载到本地再进行合...

qq_41187907的博客 3345

超越简单替换:用Poi-tl玩转Word模板,实现数据明细表与动态柱状图联动

本文深入探讨了如何利用Poi-tl(POI Template Lite)在Java后端开发中实现Word模板的高级应用,包括数据明细表与动态柱状图的联动展示。通过详细的代码示例和模板设计技巧,帮助开发者高效生成专业级的数据分析报告,提升数据处理和可视化能力。

weixin_30977485的博客 149

POI操作word填充数据,合并多个word为一个,遇到一些问题的解决

POI操作word填充数据,合并多个word为一个,遇到一些问题的解决 最近搞一个向word模板中替换占位符 填充数据,然后将多个word合并在一起的方法。网上一搜有很多资料,现在在这儿对过程中遇到的一些问题进行描述。 测试工程在这儿需要的可以点击下载.包括所需要的所有jar包和测试程序和word模板等。 问题描述 java 调用poi操作word,我用的是2007以上的word,格式是.docx...

嘻嘻哈哈 8943

java springboot 写入word文档(word模版: 文字,表格,图片)

java使用模版,填充word。包括文字,表格,图片

草叶儿的博客 6037

比freemarker还好用的模板引擎,poi-tl,动态生成数据

在之前项目中有这样一个需求,就是本地保存合同模板,然后要动态生成合同的内容,之后调用第三方(上上签)去进行签署合同和盖章,当说动态生成合同中内容是,我第一个想到的是freemarker,后来跟同事商量了一下最后决定用poi-tl,这是一个纯java的模板引擎,是基于word的,用法呢可以说是非常的简单,现在word中你需要的位置写上占位,占位符的格式是{{占位}}这个样子的,如下图   像{{...

某开发小姐姐的博客 4413

Java Web: 数据填充word模板并导出

Java Web: 数据填充word模板并导出问题使用maven引用代码实现word模板(注意word文件的版本,部分版本可能会报错) 问题 在我们做web开发的时候,经常会遇到将数据导出为固定模板的word或者excel,在这里介绍一个非常简单的模板导出工具。代码极其简单,实际使用仅需两行,就不多赘述了 使用 maven引用 <dependencies> <!--word操作工具类--> <dependency>

Ta0Zl的博客 1286

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

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

BADAO_LIUMANG_QIZHI的博客 5766

xwpftemplate的时间设置_poi-tl: Java word的模板引擎,对docx格式的文档增加模板语法,简化样式处理,支持对段落、页眉、页脚、表格等模板替换...

poi-tlJava word的模板引擎,对docx格式的文档增加模板语法,简化样式处理。目前支持对段落、页眉、页脚、表格的文本、图片、表单渲染。Why poi-tl对于word模板替换,我们不仅要考虑复杂的模板格式,还要考虑字体,颜色,处理页眉页脚,使用稍显复杂的poi的API等,现实项目中又有许多需求需要后台动态生成数据然后替换word模板,供前台下载或者打印,为了避免:java操作word使...

weixin_39956353的博客 1710

POI-TL生成饼状图并替换word模板占位符,如何实现?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 1290

不用SE63逐个翻译!ABAP函数LXE_OBJ_TEXT_PAIR_WRITE批量处理TCODE描述的3种姿势

本文介绍了三种利用ABAP函数LXE_OBJ_TEXT_PAIR_WRITE批量翻译SAP事务码(TCODE)描述的高效方案,旨在替代SE63逐个翻译的低效操作。内容涵盖从基础循环、Excel导入到全自动程序集成的实现方法,帮助开发者显著提升批量翻译效率,并深入解析了SAP翻译体系的核心原理与实战技巧。

weixin_42593130的博客 659

java word模板_GitHub - Sayi/poi-tl: Minimal word(docx) templating with {{template}} in Java

poi-tl(poi-template-language) Word 模板引擎,基于Apache POI - the Java API for Microsoft Documents。What is poi-tlFreeMarker、Velocity基于文本模板和数据生成新的HTML页面、配置文件等,poi-tl是Word模板引擎,基于Microsoft Word模板和数据生成新的文档。W...

weixin_39980129的博客 241

AppleAccount注册之生成sign

根据日志发现:签名来自于AuthKit的-[AKAppleIDServerResourceLoadDelegate signRequest:withCompletionHandler:]的一个block,这个库是放在共享缓存库里的,找到提前准备好的IDA文件,先去找主方法,根据分析IDA,最后找到了实际生成签名的方法:t1。,接受五个参数,context(之前讲的获取到的客户端证书),bytes(待加密的body字节),length(字节长度),以及两个接受结果的参数,直接进这个方法看,

2503_90751938的博客 1002

基于poi-tl实现word文档模版动态替换

poi-tl(poi template language)是一个基于Apache POI的Word模板引擎,也是一个免费开源的Java类库,你可以非常方便的加入到你的项目中,使用模板和数据创建Word文档。

chengpei147的博客 737

普通人也能看懂的Transformer源代码解释(PyTorch)

Transformer源代码解释之PyTorch篇 章节 词嵌入 位置编码 多头注意力 搭建Transformer 在这里插入图片描述 词嵌入 Transformer本质上是一种Encoder,以翻译任务为例,原始数据集是以两种语言组成一行的,在应用时,应是Encoder输入源语言序列,Decoder里面输入需要被转换的语言序列(训练时)。一个文本常有许多序列组成,常见操作为将序列进行一些预处理(如词切分等)变成列表,一个序列的列表的元素通常为词表中不可切分的最小词,整个文本就是一个大列表,元素为一个一

qq_50974223的博客 4165

基于FPGA的数字信号处理(11)--定点数的舍入模式(2)向最临近值取整nearest

基于FPGA的数字信号处理(11)--定点数的舍入模式(2)向最临近值取整nearest

孤独的单刀 5472

java制作奖状_GitHub - gaoyukai/poi-tl: Minimal Microsoft word(docx) templating with {{template}} in Java...

poi-tl(poi-template-language) Word 模板引擎,基于Apache POI - the Java API for Microsoft Documents。What is poi-tlFreeMarker、Velocity基于文本模板和数据生成新的HTML页面、配置文件等,poi-tl是Word模板引擎,基于Microsoft Word模板和数据生成新的文档。W...

weixin_30296797的博客 502

matlab电子科技大学数学实验期末模拟35道(1)

【代码】matlab电子科技大学数学实验期末模拟35道。

c_wrj_的博客 2041

根据模板动态生成word(三)使用poi-tl生成word

poi-tl是一个基于Apache POI的Word模板引擎,也是一个免费开源的Java类库。同类型的FreeMarker或Velocity基于文本模板和数据生成新的html页面或配置文件。而poi tl是一个基于Word模板和数据生成新文档的Word模板引擎。Word模板具有丰富的样式。Poi-tl将在生成的文档中完美地保留模板中的样式。也可以设置标记的样式。标记的样式将应用于替换的文本,因此您可以专注于模板设计。poi-tl是一个“无逻辑”模板引擎。

fhey的博客 1万+

极智AI | 谈谈为什么卷积加速更喜欢 NHWC Layout

本文主要讨论一下为什么卷积加速更加喜欢 NHWC 的数据排布。

极智视界 2970

LVGL core disp显示设计(lv_disp.c)

lv_disp.c当前显示页面的配置scr_act在原始的LVGL是以screen的概念存在,但我们还是习惯叫它为一个页面提供获取top_layer、sys_layer、prev_scr图层接口配置主题管理默认的主题管理是递归查找的,实际项目中因此页面的复杂性,虽然也兼容了此主题管理的方案,但还是推荐使用单页面自行管理主题的方案壁纸设置多页面切换的动画支持计算无用户操作时间清理显示缓存。

Bigan(安)的博客 2330

poi-tl—一个超级好用开源的Word模板引擎

1、poi-tl是什么 poi-tl是一个基于Apache POI的Word模板引擎,同时它也是一个免费开源(github地址)的Java类库,给Java程序员带来了word处理上的便捷。 2、官方介绍 在文档的任何地方做任何事情(Do Anything Anywhere)是poi-tl的星辰大海。 ​ 2.1 poi-tl与其他word模板引擎的对比 方案 移植性 功能性 易用性 Poi-tl Java跨平台 Word模板引擎 基于Apache POI,更友好的API Apa

Java框架、并发编程、分布式、微服务、Redis、HarmonyOS、中间件等技术 2万+

uniapp [微信小程序] - 详解微信小程序端接入mqtt全流程及示例源码教程,uniApp微信小程序端如何接入MQTT插件并实现连接/断开+发布订阅+消息队列+离线重连等各种示例代码(开箱即用)

uniapp微信小程序接入MQTT,uniapp中使用mqtt,uniapp 微信小程序端接入mqtt示例代码教程,适用于微信小程序的MQTT插件,uniapp开发微信小程序连接mqtt,uniApp微信小程序接入MQTT协议,uniapp vue3微信小程序使用MQTT的小例子接入流程,使用uniapp开发小程序接入mqtt,如何在uniapp项目中使用mqtt,uniapp mqtt的使用示例,mqtt连接报错,如何在项目里集成mqtt,Mqtt协议,主动连接mqtt,订阅消息,实现发布,订阅和接收消息

🏆 前端领域优质创作者 2880

poi-tl(word模板渲染)

pot-tl是一个word模板渲染引擎,支持图片、文本、表格等不同的模板数据渲染。

一叶知春秋 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

SpringBoot导出Word方式一:根据Word模板动态生成word(Poi-tl)

SpringBoot 项目使用poi-tl实现导出word功能: 获取数据录入到固定的word模板,最后生成新的word文档。 Poi-tl官方文档:http://deepoove.com/poi-tl/ 一、需求 根据word模板,动态填充模板内容,生成新的word。 二、poi-tl介绍 poi-tl(poi template language)是Word模板引擎,基于Microsoft Word模板和数据生成新的文档。 Apache POI不仅在上层封装了易用的文档API(文本、图片、表格、页眉、页脚

12程序猿的博客 9450

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

poi-tl实现对Word模板中复杂表格的数据填充

开发时, 我们有时需要进行word类型表格导出,而对于表格操作. 我们一般可能会倾向于使用 poi 进行操作. 但poi操作比较复杂,所以就在寻找一种可以快速将内容填充到表格中的工具. 而pot-tl 恰好满足了我们这一需求......

时间静止 5569

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: springboot 环境下 jetcache使用详解
下一篇: 自用- git命令
xiaoduup
博客等级 码龄9年 23粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值