表格导出Excel表格时间格式化

表格导出生成Excel文件后,Excel文件中的时间属性显示的是时间戳,怎么更改时间格式,显示正确的时间格式
图片

这个得看数据是什么格式的,得跟踪一下 ExcelExporter.formatValueCell() 方法。这个方法是格式化单元格的,

我这边将时间格式设置成了这个中类型,但是生成的Excel文件中时间还是时间戳
图片

你跟踪一下我上面说的那个方法吧,看看具体到特定字段的时候是怎么处理的。

跟踪过了,传入的时间是yyyy-MM-dd格式,设置单元格格式的时候,变成了时间戳
企业微信截图_16880261365462

我查了下源码,这里有个问题:

dateTimeFormatCellStyle = wb.createCellStyle();
String dateTimeFormat = getMessage("excelExporter.dateTimeFormat");
// 问题在这一行
dateTimeFormatCellStyle.setDataFormat(getBuiltinFormat(dateTimeFormat));

调用了 getBuiltinFormat(dateTimeFormat),但是poi内置的format没有我们自定义的格式。

所以,需要按照 这个帖子 的内容自定义一个exporter,然后重写 createFormats() 方法:

@Autowired
protected Messages messages;
@Override
protected void createFormats() {
    super.createFormats();
    CreationHelper createHelper = wb.getCreationHelper();
    short format = createHelper.createDataFormat().getFormat(messages.getMessage("excelExporter.dateTimeFormat"));
    dateTimeFormatCellStyle.setDataFormat(format);
}

后期会将这个问题修复吗

如果上面的方法能用,我建议你在项目中先用着。这个问题从核心开发的角度来看,并不是很重要,因为可以通过扩展bean逻辑自己修改。所以修复时间还不定。

好的,谢谢