1 Maven依赖
<!-- easyexcel文档处理工具 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.8</version>
</dependency>
<!-- hutool工具包 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.6.2</version>
</dependency>
2 DateTimeConverter
package com.convert;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.*;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import org.springframework.stereotype.Component;
/**
* DateTime类型转换器
*/
@Component
public class DateTimeConverter implements Converter<DateTime> {
@Override
public Class<DateTime> supportJavaTypeKey() {
return DateTime.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public DateTime convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty
, GlobalConfiguration globalConfiguration) throws Exception {
return DateUtil.parse(cellData.getStringValue(), "yyyy-MM-dd HH:mm:ss");
}
@Override
public CellData convertToExcelData(DateTime dateTime, ExcelContentProperty excelContentProperty
, GlobalConfiguration globalConfiguration) throws Exception {
return new CellData<>(DateUtil.format(dateTime, "yyyy-MM-dd HH:mm:ss"));
}
}
3 调试代码
/**
* 调试自定义Convert
*
* @param response
*/
@GetMapping("/customDateTimeConvert")
public void customDateTimeConvert(HttpServletResponse response) throws IOException {
List<List<Object>> sheetDataList = new ArrayList<>();
List<Object> rowList = new ArrayList<>();
rowList.add(DateUtil.parse("2021-08-23 20:20:20"));
sheetDataList.add(rowList);
response.addHeader("Content-Disposition", "filename=test.xlsx");
//设置类型,扩展名为.xls
response.setContentType("application/vnd.ms-excel");
ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream())
//加载类型转换器
.registerConverter(new DateTimeConverter()).build();
WriteSheet writeSheet = EasyExcel.writerSheet("模板").build();
excelWriter.write(sheetDataList, writeSheet);
//千万别忘记finish 会帮忙关闭流
excelWriter.finish();
}
4 调试结果