表格导出生成Excel文件后,Excel文件中的时间属性显示的是时间戳,怎么更改时间格式,显示正确的时间格式
这个得看数据是什么格式的,得跟踪一下 ExcelExporter.formatValueCell()
方法。这个方法是格式化单元格的,
我这边将时间格式设置成了这个中类型,但是生成的Excel文件中时间还是时间戳
你跟踪一下我上面说的那个方法吧,看看具体到特定字段的时候是怎么处理的。
跟踪过了,传入的时间是yyyy-MM-dd格式,设置单元格格式的时候,变成了时间戳
我查了下源码,这里有个问题:
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逻辑自己修改。所以修复时间还不定。
好的,谢谢