跳到主要内容

表头

本章节将介绍写入电子表格中的表头数据。

复杂头写入

概述

支持设置多级表头,通过 @ExcelProperty 注解指定主标题和子标题。

POJO 类


@Getter
@Setter
@EqualsAndHashCode
public class ComplexHeadData {
@ExcelProperty({"主标题", "字符串标题"})
private String string;
@ExcelProperty({"主标题", "日期标题"})
private Date date;
@ExcelProperty({"主标题", "数字标题"})
private Double doubleData;
}

代码示例


@Test
public void complexHeadWrite() {
String fileName = "complexHeadWrite" + System.currentTimeMillis() + ".xlsx";
FesodSheet.write(fileName, ComplexHeadData.class)
.sheet()
.doWrite(data());
}

结果

img


动态头写入

概述

实时生成动态表头,适用于表头内容动态变化的场景。

代码示例


@Test
public void dynamicHeadWrite() {
String fileName = "dynamicHeadWrite" + System.currentTimeMillis() + ".xlsx";

List<List<String>> head = Arrays.asList(
Collections.singletonList("动态字符串标题"),
Collections.singletonList("动态数字标题"),
Collections.singletonList("动态日期标题"));

FesodSheet.write(fileName)
.head(head)
.sheet()
.doWrite(data());
}

结果

img


表头合并策略

概述

默认情况下,FastExcel 会自动合并名称相同的表头单元格。但是,您可以使用 headerMergeStrategy 参数来控制合并行为。

合并策略

  • NONE: 不进行任何自动合并。
  • HORIZONTAL_ONLY: 仅水平合并(同一行内的相同单元格)。
  • VERTICAL_ONLY: 仅垂直合并(同一列内的相同单元格)。
  • FULL_RECTANGLE: 仅合并完整的矩形区域(所有单元格名称相同)。
  • AUTO: 自动合并(默认)。

代码示例

@Test
public void dynamicHeadWriteWithStrategy() {
String fileName = "dynamicHeadWrite" + System.currentTimeMillis() + ".xlsx";

List<List<String>> head = Arrays.asList(
Collections.singletonList("动态字符串标题"),
Collections.singletonList("动态数字标题"),
Collections.singletonList("动态日期标题"));

FastExcel.write(fileName)
.head(head)
.headerMergeStrategy(HeaderMergeStrategy.FULL_RECTANGLE)
.sheet()
.doWrite(data());
}

常见使用场景

禁用合并: 使用 NONE 完全禁用自动合并:

FastExcel.write(fileName)
.head(head)
.headerMergeStrategy(HeaderMergeStrategy.NONE)
.sheet()
.doWrite(data());

注意: 旧的 automaticMergeHead 参数仍然支持以保持向后兼容。当未设置 headerMergeStrategy 时,行为由 automaticMergeHead 决定。