本文最后更新于:2025年4月13日
                  
                
              
            
            
              
                
                上一节我们使用EasyExcel框架的四种方式将数据输出到Excel文件中,实现了如下图的效果:

其中序号、员工号、员工姓名等是各个列的表头(灰色单元格),接下来这一部分我们要对表头进行相关操作。
一、输出无表头数据
案例:不输出表头,显示效果如下图所示:

EasyExcel框架中有一个类AbstractExcelWriterParameterBuilder,这是一个抽象类,在这个类中有一个方法needHead,参数是Boolean类型,如果传入的值是false就可以确保表头不再输出,以下是执行的代码:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 
 | @Testpublic void test() {
 String filePath = EmployeeUtils.getFilePath();
 EasyExcel.write(filePath, Employee.class)
 
 .needHead(false)
 .sheet("测试工作表")
 .doWrite(EmployeeUtils.getDataList());
 System.out.println("数据成功写出到Excel文件中");
 }
 
 | 
此时执行这段代码就不会出现表头信息,符合我们预期目标:

二、输出复杂表头
案例:输出的Excel文件表头如下图所示:

由上述表头我们发现员工信息表和其他属性(例如:序号、员工号等)是一对多的关系,为了更加直观地在代码中显示,我们需要将图中的关系进一步拆解一对一的关系:
| 12
 3
 4
 5
 6
 
 | 员工信息表 员工信息表
 员工信息表
 员工信息表
 员工信息表
 员工信息表
 
 | 
这样拆解以后,我们就可以在@ExcelProperty中使用value属性了,这个属性本身是一个字符串数组,要想发生类似上图表头合并,需要满足如下条件:
- 类中的属性之间必须相邻;
- 属性使用@ExcelProprety修饰并且注解中包含value属性(字符串数组);
- 字符串数组中相同的索引值对应的字符串值完全相同。
根据上述内容,我们将实体类Employee属性中的注解做一点改动,代码如下:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 
 | package com.icode504.entity;
 import com.alibaba.excel.annotation.ExcelProperty;
 import lombok.*;
 
 import java.util.Date;
 
 
 
 
 
 
 
 @AllArgsConstructor
 @NoArgsConstructor
 @Getter
 @Setter
 @ToString
 public class Employee {
 
 
 @ExcelProperty({"员工信息表","序号"})
 private Integer id;
 
 
 @ExcelProperty({"员工信息表", "员工号"})
 private String employeeId;
 
 
 @ExcelProperty({"员工信息表", "员工姓名"})
 private String employeeName;
 
 
 @ExcelProperty({"员工信息表", "年龄"})
 private Integer age;
 
 
 @ExcelProperty({"员工信息表", "性别"})
 private String gender;
 
 
 @ExcelProperty({"员工信息表", "生日"})
 private Date birthday;
 
 
 }
 
 | 
我们再运行一次EasyExcel代码来导出Excel文件:
| 12
 3
 4
 5
 6
 7
 8
 
 | @Testpublic void test() throws Exception {
 String filePath = EmployeeUtils.getFilePath();
 EasyExcel.write(filePath, Employee.class)
 .sheet("模板")
 .doWrite(EmployeeUtils.getDataList());
 System.out.println("数据成功写出到Excel文件中");
 }
 
 | 
此时生成的表头符合案例的要求:

三、知识点总结
EasyExcel的表头操作的知识点总结如下图所示:
