跳到主要内容

格式化

本章节介绍读取数据时的格式化处理。

自定义格式读取

概述

读取 Excel 文件时,日期和数字单元格可以通过注解自动转换为格式化的 String 值。当您需要精确控制日期和数字的文本表示时,此功能非常实用。

POJO 类

@Getter
@Setter
@EqualsAndHashCode
public class ConverterData {
@ExcelProperty(value = "字符串标题", converter = CustomStringStringConverter.class)
private String string;

@DateTimeFormat("yyyy-MM-dd HH:mm:ss")
@ExcelProperty("日期标题")
private String date;

@NumberFormat("#.##%")
@ExcelProperty("数字标题")
private String doubleData;
}

转换行为

Excel 单元格值注解Java 字段值
Hello@ExcelProperty(converter = CustomStringStringConverter.class)"自定义:Hello"
2025-01-01 12:30:00@DateTimeFormat("yyyy-MM-dd HH:mm:ss")"2025-01-01 12:30:00"
0.56@NumberFormat("#.##%")"56%"
提示

POJO 中所有字段均为 String 类型。Fesod 会在设置字段值之前,应用配置的转换器/格式对原始 Excel 单元格值进行转换。

代码示例

@Test
public void converterRead() {
String fileName = "path/to/demo.xlsx";

FesodSheet.read(fileName, ConverterData.class, new PageReadListener<ConverterData>(dataList -> {
for (ConverterData data : dataList) {
log.info("读取到一行数据:{}", JSON.toJSONString(data));
}
})).sheet().doRead();
}

注解参考

@DateTimeFormat

当字段类型为 String 时,将日期单元格转换为格式化字符串。

参数默认值说明
value日期格式模式,参考 java.text.SimpleDateFormat
use1904windowing自动如果 Excel 文件使用 1904 日期系统,设置为 true

@NumberFormat

当字段类型为 String 时,将数字单元格转换为格式化字符串。

参数默认值说明
value数字格式模式,参考 java.text.DecimalFormat
roundingModeHALF_UP格式化时的舍入模式