POI-tl 知识整理:整理3 -> 动态生成表格

2024-01-15 14:04

本文主要是介绍POI-tl 知识整理:整理3 -> 动态生成表格,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 表格行循环

(1)需要渲染的表格的模板


说明{{goods}} 是个标准的标签,将 {{goods}} 置于循环行的上一行,循环行设置要循环的标签和内容,注意此时的标签应该使用 [] ,以此来区别poi-tl的默认标签语法。同理,{{labors}} 也置于循环行的上一行。 

 

(2)定义两个实体类 

@Data
public class Goods {private int count;private String name;private String desc;private int discount;private int tax;
}@Data
public class Labors {private String category;private int people;private int price;
}

(3)测试代码

    @Testpublic void autoGenerateTable1() throws Exception {// 数据Goods goods1 = new Goods();Goods goods2 = new Goods();Labors labors1 = new Labors();Labors labors2 = new Labors();goods1.setCount(2);goods1.setName("商品1");goods1.setDiscount(10);goods1.setDesc("商品1描述");goods1.setTax(5);goods2.setCount(4);goods2.setName("商品2");goods2.setDiscount(20);goods2.setDesc("商品2描述");goods2.setTax(10);List<Goods> goodsList = Arrays.asList(goods1, goods2);labors1.setPeople(3);labors1.setCategory("类别1");labors1.setPrice(100);labors2.setPeople(1);labors2.setCategory("类别2");labors2.setPrice(200);List<Labors> laborList = Arrays.asList(labors1, labors2);// 用行循环插件LoopRowTableRenderPolicy renderPolicy = new LoopRowTableRenderPolicy();ConfigureBuilder builder = Configure.builder();Configure configure = builder.bind("goods", renderPolicy).bind("labors", renderPolicy).build();XWPFTemplate template = XWPFTemplate.compile("D:\\Idea-projects\\POI_word\\templates_autoGenerateTable.docx",configure);Map<String, Object> map = new HashMap<>();map.put("goods", goodsList);map.put("labors", laborList);template.render(map);FileOutputStream fileOutputStream = new FileOutputStream("D:\\Idea-projects\\POI_word\\output_autoGenerateTable.docx");template.writeAndClose(fileOutputStream);template.close();}

(4)渲染结果 

 

(5)测试代码详细解释


2 表格列循环

列循环跟行循环没有什么区别,就是将行循环插件换成了列循环插件

(1) 模板


(2)测试代码

    @Testpublic void autoGenerateTable2() throws Exception {// 数据Labors labors1 = new Labors();Labors labors2 = new Labors();labors1.setPeople(3);labors1.setCategory("类别1");labors1.setPrice(100);labors2.setPeople(1);labors2.setCategory("类别2");labors2.setPrice(200);List<Labors> laborList = Arrays.asList(labors1, labors2);// 用列循环插件LoopColumnTableRenderPolicy renderPolicy = new LoopColumnTableRenderPolicy();ConfigureBuilder builder = Configure.builder();Configure configure = builder.bind("labors", renderPolicy).build();XWPFTemplate template = XWPFTemplate.compile("D:\\Idea-projects\\POI_word\\templates_autoGenerateTableCol.docx",configure);Map<String, Object> map = new HashMap<>();map.put("labors", laborList);template.render(map);FileOutputStream fileOutputStream = new FileOutputStream("D:\\Idea-projects\\POI_word\\output_autoGenerateTableCol.docx");template.writeAndClose(fileOutputStream);template.close();}


(3)渲染结果

 

这篇关于POI-tl 知识整理:整理3 -> 动态生成表格的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/609140

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

C#如何动态创建Label,及动态label事件

《C#如何动态创建Label,及动态label事件》:本文主要介绍C#如何动态创建Label,及动态label事件,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#如何动态创建Label,及动态label事件第一点:switch中的生成我们的label事件接着,

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Mysql中深分页的五种常用方法整理

《Mysql中深分页的五种常用方法整理》在数据量非常大的情况下,深分页查询则变得很常见,这篇文章为大家整理了5个常用的方法,文中的示例代码讲解详细,大家可以根据自己的需求进行选择... 目录方案一:延迟关联 (Deferred Join)方案二:有序唯一键分页 (Cursor-based Paginatio

Java利用poi实现word表格转excel

《Java利用poi实现word表格转excel》这篇文章主要为大家详细介绍了Java如何利用poi实现word表格转excel,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、每行对象类需要针对不同的表格进行对应的创建。package org.example.wordToEx