用EasyExcel做导出,需要用@ExcelProperty做格式转换,比如日期转换,枚举类转换
然后新建一个转换类
里面有两个实现方法,converToJavaData是导入时,数据转换定义格式,converToExcelData是导出时做数据转换的。
然后回到问题,导出时没有进入这个注解转换类,首先debug看一下
这个注解转换类执行方法是AbstractExcelWriteExecutor.java里面的doConvert方法,看了下参数ExceContentProperty是空的,然后看了下WriteHolder里面的exceContentProperty参数对应的headClazz是空的,然后去看监听器ModelBuildEventListener。
也就是说,他的导出取值都是通过head里取得字段值。我们需要初始化要要导出得模板类初始化一下head属性就可以了。
后续,附带一个导入时日期转换异常,万能转换方法,放到converToJavaData里用
if(null==cellData){
returnnull;
}
LocalDateTimeresult=null;
if(cellData.getType()==CellDataTypeEnum.NUMBER){
if(contentProperty==null||contentProperty.getDateTimeFormatProperty()==null){
Datedate=DateUtil.getJavaDate(cellData.getNumberValue().doubleValue(),
globalConfiguration.getUse1904windowing(),null);
result=date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
}else{
Datedate=DateUtil.getJavaDate(cellData.getNumberValue().doubleValue(),
contentProperty.getDateTimeFormatProperty().getUse1904windowing(),null);
result=date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
}
}if(cellData.getTyp服务器托管网e()==CellDataTypeEnum.STRING){
Stringvalue=cellData.getStringValue();
if(value.contains(“-“)){
try{
result=LocalDateTime.parse(value,DateTimeFormatter.ofPattern(“yyyy-MM-ddHH:mm:ss”));
/*result=Lo服务器托管网calDateTime.parse(cellData.getStringValue());*/
}catch(Exceptione){
e.printStackTrace();
}
}
elseif(value.contains(“/”)){
try{
result=LocalDateTime.parse(newSimpleDateFormat(“yyyy/MM/ddHH:mm:ss”).format(value));
}catch(Exceptione){
e.printStackTrace();
}
}
}
returnresult;
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
在学习中使用哪些工具 “工欲善其事必先利其器。”在网络技术的学习过程中,往往需要使用一些工具,来辅助我们学习,以此将抽象的技术通过具体的方式来表现出来,便于加深网络理论的印象。 今天,我将列举我在学习过程中使用过的工具。以网络仿真工具为例,建议初学者选择一个厂…