easyExcel 读取日期为数字的解决方案
easyexcel
快速、简洁、解决大文件内存溢出的java处理Excel工具
项目地址:https://gitcode.com/gh_mirrors/ea/easyexcel
免费下载资源
·
在导入的模板文件中设置了日期格式 yyyy/mm/dd,java 接受实体类对应字段为Date
/**
* 使用日期
*/
@ExcelProperty(value = "使用日期",converter = DateConverter.class)
@DateTimeFormat("yyyy/MM/dd")
@JsonFormat(pattern = "yyyy/MM/dd",timezone = "GMT+8",shape = JsonFormat.Shape.STRING)
@JsonSerialize(using = DateSerializer.class)
private Date usingTime;
easyExcel在解析时 该字段类型为Number. 值是从1900年1月1日到这一天的日期,所以添加解析器
public class DateConverter implements Converter<Date> {
@Override
public Class supportJavaTypeKey() {
return Date.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public Date convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) {
if (cellData.getType().equals(CellDataTypeEnum.NUMBER)) {
LocalDate localDate = LocalDate.of(1900, 1, 1);
//excel 有些奇怪的bug, 导致日期数差2
localDate = localDate.plusDays(cellData.getNumberValue().longValue() - 2);
return Date.valueOf(localDate);
} else if (cellData.getType().equals(CellDataTypeEnum.STRING)) {
return Date.valueOf(LocalDate.parse(cellData.getStringValue(), DateTimeFormatter.ofPattern("yyyy/MM/dd")));
} else {
return null;
}
}
@Override
public CellData convertToExcelData(Date date, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) {
return new CellData<>(date.toLocalDate().format(DateTimeFormatter.ofPattern("yyyy/MM/dd")));
}
}
GitHub 加速计划 / ea / easyexcel
31.64 K
7.47 K
下载
快速、简洁、解决大文件内存溢出的java处理Excel工具
最近提交(Master分支:3 个月前 )
c42183df
Bugfix 3 个月前
efa7dff6 * 重新加回 `commons-io`
3 个月前
更多推荐
已为社区贡献10条内容
所有评论(0)