在使用easyExcel 填写导出的时候,遇到Date类型的字段填写在excel,显示的单元格的格式为自定义格式,原本该单元格格式设置了边框,居中,填写导出后的居然没有加边框,也没有居中。按照源码,写上一个Date转换类,实现Converter接口,重写它的方法,如下:
package com.lxj.common.convert;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
*
* @Author: lxj
* @Date: 2022/7/19
* @Description: yyyy-MM-dd easyExcel 日期转换
*/
public class DateConverter implements Converter<Date> {
private static final String PATTERN_YYYY_MM_DD = "yyyy-MM-dd";
@Override
public Class<?> supportJavaTypeKey() {
return Converter.super.supportJavaTypeKey();
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return Converter.super.supportExcelTypeKey();
}
@Override
public WriteCellData<?> convertToExcelData(Date value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_YYYY_MM_DD);
String dateValue = sdf.format(value);
return new WriteCellData<>(dateValue);
}
}
然后,在实体类属性上写上@ExcelProperty注解
@ExcelProperty(converter = DateConverter.class)
private Date date;
需要不同的日期格式,可以写多个日期格式转换的类即可,