跳到主要内容

格式化

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

自定义格式读取​

概述​

读取 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格式化时的舍入模式