• easyexcel3导出日期格式如何按yyyy-MM-dd显示?
  • 发布于 2个月前
  • 464 热度
    0 评论
今天测试发现一个问题,项目导出的excel文档中,时间格式的字段变成了这样:

检查代码发现,导出的DTO这个字段用的是java.util.Date类型,默认就会有个尾巴的。如果只想展示年月日时分秒,需要添加一个转换器DateConverter,下面是参考代码:
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.converters.WriteConverterContext;
import com.alibaba.excel.metadata.data.WriteCellData;
 
import java.text.SimpleDateFormat;
import java.util.Date;
 
/**
 * 堆代码 duidaima.com
 * 将时间格式转化为yyyy-MM-dd
 */
public class DateConverter implements Converter<Date> {
 
    private static  final String PATTERN_YYYY_MM_DD = "yyyy-MM-dd";
 
    @Override
    public Class<Date> supportJavaTypeKey() {
        return Date.class;
    }
 
    @Override
    public WriteCellData<String> convertToExcelData(WriteConverterContext<Date> context) throws Exception {
        Date date = context.getValue();
        if (date == null) {
            return null;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_YYYY_MM_DD);
        return new WriteCellData<>(sdf.format(date));
    }
}
以上代码定义了一个实现了 EasyExcel 的 Converter 接口的日期转换器类DateConverter,用于将Java对象中的Date类型数据转换成Excel中的String类型数据。DateConverter 中定义了一个常量PATTERN_YYYY_MM_DD,用于指定日期格式为"yyyy-MM-dd"。

实现Converter接口需要实现两个方法:
supportJavaTypeKey():返回支持的Java类型,在本例中为Date类型。
convertToExcelData():将Java对象中的Date类型数据转换成Excel中的String类型数据,通过SimpleDateFormat对Date类型数据进行格式化处理,并将格式化后的String类型数据封装成WriteCellData对象返回。

如果转换的值为null,则返回null。然后在导出的实体类对应日期属性中加上下面的注解@ExcelProperty并在括号内引入刚刚添加的转换器。
   @ExcelProperty(converter = DateConverter.class)
    private Date dataTime;
这样处理后,导出的时间就转换为年月日了.

搞定了。
用户评论