赞
踩
package hbut.community.excel.converter; import com.alibaba.excel.converters.Converter; import com.alibaba.excel.converters.ReadConverterContext; import com.alibaba.excel.converters.WriteConverterContext; import com.alibaba.excel.enums.CellDataTypeEnum; import com.alibaba.excel.metadata.data.WriteCellData; import lombok.extern.slf4j.Slf4j; import java.text.SimpleDateFormat; import java.util.Date; @Slf4j public class CustomStringToDateConverter implements Converter<Date> { private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); @Override public Class<?> supportJavaTypeKey() { return Converter.super.supportJavaTypeKey(); } @Override public CellDataTypeEnum supportExcelTypeKey() { return Converter.super.supportExcelTypeKey(); } /** * 从excel文件中读取的时候会调用, 返回的是 Date 类型的, 类型在 implements Converter<Date> 指定 * @param context * @return * @throws Exception */ @Override public Date convertToJavaData(ReadConverterContext<?> context) throws Exception { String stringValue = context.getReadCellData().getStringValue(); log.info(stringValue); return format.parse(stringValue); } }
convertToJavaData
这个方法的作用就是将字符串转换为日期类对象@Data public class Bgqk extends AbstractExcel { /** * 内部序号 */ @ExcelProperty(value = "nbxh") private String nbxh; /** * 变更事项 */ @ExcelProperty("bgsx") private String bgsx; /** * 变更日期 */ @ExcelProperty(value = "cqrq", converter = CustomStringToDateConverter.class) private Date cqrq; /** * 当前数据日期 */ @ExcelIgnore private Date currentDate; }
上图可以看到一个很明显的 nbxh(C|50)
后面的 (C|50)
并不是表头, 在读取的时候应该是
/**
* 内部序号
*/
@ExcelProperty(value = "nbxh")
private String nbxh;
字段映射应该是 nbxh
而并非是 nbxh(C|50)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。