一.简介

本篇使用阿里EasyExcel框架,官方文档: https://github.com/alibaba/easyexcel

     <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.6</version></dependency>

二.实现

假设我们现在要创建一个表头,格式为:

观察一下这个表头,其中第一行存在单元格合并,可能有些人会认为需要去操作EasyExcel的自定义单元格合并策略,其实并没有那么麻烦,这里直接给出代码:

public void head(){String fileName = "./头" + System.currentTimeMillis() + ".xlsx";//数据列表List<List<String>> dataList = new ArrayList<>();//表头List<List<String>> header = new ArrayList<>();List<String> cellContain1 = new ArrayList<>();cellContain1.add("大连");cellContain1.add("中山区");header.add(cellContain1);List<String> cellContain2 = new ArrayList<>();cellContain2.add("大连");cellContain2.add("沙河口区");header.add(cellContain2);List<String> cellContain3 = new ArrayList<>();cellContain3.add("成都");cellContain3.add("锦江区");header.add(cellContain3);List<String> cellContain4 = new ArrayList<>();cellContain4.add("成都");cellContain4.add("青羊区");header.add(cellContain4);EasyExcel.write(fileName)// 这里放入动态头.head(header).sheet("TEST").doWrite(dataList);}

其中,比较关键的部分是.head(header)这个方法接受一个List<List<>>对象作为动态表头,所以只要弄明白该List的结构与excel表头的对应关系,就可以写出无限复杂的表头。
这里我详细说一下这个结构:

  • 内层List:每个List对应的是表头中的每一列单元格,长度最大的List的长度决定了表头的行数,并且会合并每个List下标和内容都相同的单元格。
  • 外层List:最终的表头结构。

小结:内层List元素的下标对应excel中的行标,外层List元素的下标对应excel中的列标,每个内层List中下标相同并且内容相同的相邻元素在excel中会被合并为一个单元格。

最后再举一个相对复杂的例子方便大家对照:

public void head(){String fileName = "./头" + System.currentTimeMillis() + ".xlsx";List<List<String>> dataList = new ArrayList<>();List<List<String>> header = new ArrayList<>();List<String> cellContain1 = new ArrayList<>();cellContain1.add("大连");cellContain1.add("中山区");cellContain1.add("中山广场");header.add(cellContain1);List<String> cellContain2 = new ArrayList<>();cellContain2.add("大连");cellContain2.add("沙河口区");cellContain2.add("中山广场");header.add(cellContain2);List<String> cellContain3 = new ArrayList<>();cellContain3.add("成都");cellContain3.add("锦江区");cellContain3.add("中山广场");header.add(cellContain3);List<String> cellContain4 = new ArrayList<>();cellContain4.add("成都");cellContain4.add("青羊区");cellContain4.add("万达广场");header.add(cellContain4);List<String> cellContain5 = new ArrayList<>();cellContain5.add("大连");cellContain5.add("甘井子区");header.add(cellContain5);EasyExcel.write(fileName)// 这里放入动态头.head(header).sheet("TEST").doWrite(dataList);

总结:这里我举的两个例子表头是写死的,如果需求是动态表头就把生成表头的方法单独抽出来,无论是从数据库读取还是配置进去,最终返回正确的header就可以了。

EasyExcel复杂表头的生成方法相关推荐

  1. EasyExcel 动态表头 + 数据单元格合并

    前言 本文想要达到以及最终实现的效果: 要实现这种效果,包含两个部分的操作: 1. 动态表头 EasyExcel 生成 Excel 时要使表头有合并效果,可以采用**注解和非注解(动态表头)**的方法 ...

  2. easyExcel 复杂表头 动态表头

    需求: 要根据数据来导出这个excel 左侧菜单有一百多个固定菜单,这些肯定不能放到数据库里建字段,所以就根据上面的抽检总点数,合格总点数,合格率三个字段建立数据库字段. 技术实现: 我们选择的是ea ...

  3. catia制作物料明细_一种基于CATIA的国标标准物料清单的生成方法与流程

    本发明涉及一种物料清单的生成方法,尤其涉及一种基于CATIA的国标标准物料清单的生成方法. 背景技术: 众所周知,CATIA是法国达索公司的产品开发旗舰解决方案.作为PLM协同解决方案的一个重要组成部 ...

  4. easyexcel 复杂表头、动态表头、复杂数据导出(非注解方式)

    easyexcel 复杂表头.动态表头.复杂数据导出 easyexcel 生成动态复杂表头(非注解)+数据填充(非注解) 实现代码 生成效果图 easyexcel 生成动态复杂表头(非注解)+数据填充 ...

  5. EasyExcel复杂表头导入(一对多)

    一.前言 当前我使用过的导入导出框架有EasyPoi 和 EasyExcel,我用EasyPoi比较多. EasyPoi 框架的导入导出功能,乃至复杂表头的导入导出,网上都有很多示例,我也写过几篇博客 ...

  6. CNN可视化又添新作,南大开源Group-CAM:高效的显著图生成方法|CVPR2021

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨孙裕道 审稿丨邓富城 编辑丨极市平台 导读 最近南京大学的一篇论文收录于CVPR2021,该论文 ...

  7. UUID介绍与生成方法

    什么是UUID? UUID是Universally Unique Identifier的缩写,它是在一定的范围内(从特定的名字空间到全球)唯一的机器生成的标识符.UUID具有以下涵义: 经由一定的算法 ...

  8. Extjs4.0 开发笔记-desktop开始菜单动态生成方法

    desktop开始菜单动态生成方法: Desktop.html中,在<scripts>中的Ext.onReady之前添加如下: var mArr = [];//这里是保存显示模块的数组va ...

  9. CIKM 2020 | 知识库问答复杂问题的分层查询图生成方法

    ©PaperWeekly 原创 · 作者|舒意恒 学校|南京大学硕士生 研究方向|知识图谱 导读 本文讨论知识库问答(KBQA)中查询图生成的强化学习方法.给定一个自然语言问题,知识库问答尝试自动从存 ...

最新文章

  1. 怎么获取codeforces的数据_原创 | codeforces 1417C,逆向思考的数据结构题
  2. 第一章·MySQL介绍及安装
  3. 【iOS系列】-程序开启后台运行
  4. 【树莓派编程】检测有没有物体移动 +人脸识别
  5. java swing http请求_JavaWeb核心编程之(三.5)HTTP请求和接受表单数据
  6. 一、Go语言环境搭建
  7. 寒哥细谈之AutoLayout全解
  8. 治理软件供应链安全要打“团体赛” 共同建立供应链安全体系
  9. 启发式搜索 (Heuristically Search)-【贪婪最佳优先搜索】和【A*搜索】
  10. 【语音播报】基于matlab语音播报【含Matlab源码 507期】
  11. android studio拟器,十二、安装Android Studio 模拟器
  12. 华为虚拟服务器bim,bim云服务器
  13. 代写品牌故事怎么写才能打动消费者
  14. ZYNQ BRAM_ctrl PS PL通信报错
  15. 软件架构模式 mark Richards - 读后总结 2 事件驱动架构
  16. UnityShader屏幕后处理-Bloom效果(朦胧模糊)
  17. 什么是winpe,winpe系统有什么作用?
  18. 协处理器CP15操作指令
  19. Webots2021b和ROS2调试笔记21-07-27
  20. 武汉大学计算机学院博士几年,计算机学院博士生申请答辩资格条件

热门文章

  1. 【Java设计模式】二、UML图(类图)
  2. 表单提交中get和post方式的区别
  3. phpstorm安装+新建项目+phpstorm中文版
  4. ST-GCN训练自己的数据集代码实践问题记录
  5. 爬虫ip被封的6个解决方法
  6. Nginx3 基础配置
  7. 几个容易中的计算机EI源刊(转)
  8. YDOOK:Miniconda 官网与下载链接
  9. Option-Critic代码分析
  10. 品牌对比|罗曼 VS 欧乐B