package org.dromara.business.converte;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.ReadCellData;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import com.alibaba.excel.util.StringUtils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class CustomDateConverter implements Converter<Date> {
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
@Override
public Class<Date> supportJavaTypeKey() {
return Date.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public Date convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
String dateStr = cellData.getStringValue();
if (StringUtils.isEmpty(dateStr)) {
return null;
}
try {
return dateFormat.parse(dateStr);
} catch (ParseException e) {
throw new RuntimeException("日期格式不正确: " + dateStr, e);
}
}
@Override
public WriteCellData<String> convertToExcelData(Date value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
if (value == null) {
return new WriteCellData<>(CellDataTypeEnum.STRING, "");
}
return new WriteCellData<>(CellDataTypeEnum.STRING, dateFormat.format(value));
}
}
使用
@ExcelProperty(value = "数据日期", converter = CustomDateConverter.class)
private Date dataDate;