8
建议描述 在excel一行数据绑定到domain的时候,能否提供一个方法让使用者自己自定义解析的方式,比如多个不同的excel,字段顺序相同,但是里面的内容格式不同,如一个时间格式是yyyy-MM-dd,另一个是MM/dd/yyyy,能否通过自定义解析来完成对数据的解析
建议描述 在excel一行数据绑定到domain的时候,能否提供一个方法让使用者自己自定义解析的方式,比如多个不同的excel,字段顺序相同,但是里面的内容格式不同,如一个时间格式是yyyy-MM-dd,另一个是MM/dd/yyyy,能否通过自定义解析来完成对数据的解析
单元格的格式是有时间这种格式的, 如果你的需求是把文本类型的字符串转换成对应的时间,推荐自定义一个类型转换器即可,官方demo-日期数字自定义转换
官方demo我看过了,我也的确是这么做的,但是我的需求是想支持更多是时间格式,让不同的时间格式都能解析成java中的date
自定义一个这样的转换器就行了
public class CustomStringDateConverter implements Converter<Date> {
private List<SimpleDateFormat> simpleDateFormatList = new LinkedList<>();
public CustomStringDateConverter(){
simpleDateFormatList.add(new SimpleDateFormat("yyyy-MM-dd"));
simpleDateFormatList.add(new SimpleDateFormat("yyyy/MM/dd"));
}
@Override
public Class supportJavaTypeKey() {
return Date.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public Date convertToJavaData(CellData cellData, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) {
for (SimpleDateFormat simpleDateFormat : simpleDateFormatList) {
try {
//TODO 预先判断会更精准
return simpleDateFormat.parse(cellData.getStringValue());
} catch (ParseException e) {
//TODO 解析失败
}
}
return null;
}
@Override
public CellData convertToExcelData(Date value, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) {
return new CellData(simpleDateFormatList.get(0).format(value));
}
}