当前位置: 首页 > news >正文

java easyExce 动态表头列数不固定

使用场景

在开发中,可能会碰到多个客户提供不同格式的表单,导致表头不固定。例如,客户上传的 Excel 数据可能包含不同的字段,这些字段会动态变化,此时我们需要一个灵活的处理方案。

步骤

使用 EasyExcel 处理动态表头数据的基本步骤如下:

  1. 定义数据模型:可以用一个 Map 或列表来存放表头和数据。
  2. 动态设置表头:根据数据模型构建需要的表头。
  3. 写入 Excel 文件:使用 EasyExcel 提供的接口,将数据写入 Excel 文件。

示例代码

下面是一个使用 EasyExcel 导出动态表头的简单示例。

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.WriteTable;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class DynamicExcelExport {public static void main(String[] args) {// 模拟动态表头数据List<Map<String, Object>> data = new ArrayList<>();data.add(createRow("name", "Alice", "age", 30));data.add(createRow("name", "Bob", "age", 25));// 动态生成表头List<String> headers = new ArrayList<>();headers.add("姓名");headers.add("年龄");// 写入 Excel 文件String fileName = "dynamicExcel.xlsx";EasyExcel.write(fileName).head(createHead(headers)).sheet("动态表头").doWrite(data);}private static Map<String, Object> createRow(String key1, Object value1, String key2, Object value2) {Map<String, Object> row = new HashMap<>();row.put(key1, value1);row.put(key2, value2);return row;}private static List<List<String>> createHead(List<String> headers) {List<List<String>> head = new ArrayList<>();for (String header : headers) {List<String> column = new ArrayList<>();column.add(header);head.add(column);}return head;}
}

代码说明

  1. 数据模型:我们用 Map<String, Object> 来模拟数据行,列表中的每一个 Map 表示一行数据。
  2. 动态表头:使用一个 List 存储动态表头的名称,在 createHead 方法中将其转换为 EasyExcel 支持的格式。
  3. 写入文件:使用 EasyExcel.write 必须指定文件名和表头信息。

生成 Excel 的流程图

下面是一个简单的 UML 序列图,展示了生成 Excel 的流程。
在这里插入图片描述

http://www.lryc.cn/news/581541.html

相关文章:

  • vue3 当前页面方法暴露
  • 0704-0706上海,又聚上了
  • 《前端路由重构:解锁多语言交互的底层逻辑》
  • 【Zotero】Zotero无法正常启动解决方案
  • 深度解析命令模式:将请求封装为对象的设计智慧
  • Flink ClickHouse 连接器数据写入源码深度解析
  • Gin Web 层集成 Viper 配置文件和 Zap 日志文件指南(下)
  • LoRaWAN的设备类型有哪几种?
  • 条件渲染 v-show与v-if
  • CICD[软件安装]:ubuntu安装jenkins
  • QtConcurrent入门
  • #渗透测试#批量漏洞挖掘#HSC Mailinspector 任意文件读取漏洞(CVE-2024-34470)
  • 2025.7.6总结
  • 智能网盘检测软件,一键识别失效链接
  • ipmitool 使用简介(ipmitool sel list ipmitool sensor list)
  • 【JS逆向基础】数据分析之正则表达式
  • 支持向量机(SVM)在肝脏CT/MRI图像分类(肝癌检测)中的应用及实现
  • 【网络安全基础】第八章---电子邮件安全
  • QueryWrapper 类的作用与示例详解
  • GASVM+PSOSVM+CNN+PSOBPNN+BPNN轴承故障诊断
  • 微信小程序71~80
  • 玄机——第二章日志分析-redis应急响应
  • Python助力地热资源评估,掘金绿色能源新蓝海!
  • GIT: 一个用于视觉与语言的生成式图像到文本转换 Transformer
  • golang的defer
  • JAX study notes[15]
  • 百度文心大模型 4.5 开源深度测评:技术架构、部署实战与生态协同全解析
  • 前端环境nvm/pnpm下载配置
  • 在C#中,可以不实例化一个类而直接调用其静态字段
  • 【Elasticsearch入门到落地】15、DSL排序、分页及高亮