[alibaba/easyexcel]Excel读取获取不到某些列的值,EasyExcel 版本3.2.0

2024-01-19 435 views
6

利用@ExcelProperty("xxx")注解在实体类中做了配置,但有些列无法映射到字段上。 1、实体类定义及配置:

import com.alibaba.excel.annotation.ExcelProperty; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor;

@Data @NoArgsConstructor @AllArgsConstructor @Builder public class BizLearnVO { private String recordId; @ExcelProperty("工号") private String empNo; @ExcelProperty("姓名") private String empName; private String bizType; // 业务类别 @ExcelProperty("业务类别") private String bizTypeName; // 业务类别 @ExcelProperty("学习年度") private String learnYear; // 学习年度 @ExcelProperty("学习内容") private String content; // 学习内容 @ExcelProperty("开始时间") private String startDate; // 开始时间 @ExcelProperty("结束时间") private String endDate; // 结束时间 @ExcelProperty("主办单位") private String hostUnit; // 主办单位

@ExcelProperty("学分证号")
private String creditNo; // 学分证号
@ExcelProperty("学分类别")
private String creditTypeName;
private String creditType; // 学分类别
@ExcelProperty("学时数")
private String numOfHours; // 学时数
@ExcelProperty("学分数")
private String numOfCredit; // 学分数
@ExcelProperty("计算学分")
private String creditFlag; // 学分标记
@ExcelProperty("备注")
private String remark; // 备注信息
private String updateUser; // 修改人
private String updateDate; // 修改日期
private String checkStatus; // 审核状态
private String checkUser; // 审核人员
private String checkDate; // 审核日期
private String validOrNot; // 作废标志
private String forLevel; // 对应能级
@ExcelProperty("能级")
private String forLevelName;

}

2、业务逻辑处理 PageReadListener pageReadListener = new PageReadListener<>(list -> { list.forEach(System.out::println); }); EasyExcel.read(uploadExcel.getInputStream(), BizLearnVO.class, pageReadListener) .sheet(0) .headRowNumber(1) .doRead();

3、Excel中的数据 image

4、部分打印结果,hostUnit字段没有映射到值 BizLearnVO(recordId=null, empNo=141, empName=杨春梅, bizType=null, bizTypeName=学术会议, learnYear=2022, content=略。, startDate=2022-02-12, endDate=2022-03-01, hostUnit=null, creditNo=X201, creditTypeName=II类学分, creditType=精神卫生中心, numOfHours=32, numOfCredit=3, creditFlag=是, remark=暂无, updateUser=null, updateDate=null, checkStatus=null, checkUser=null, checkDate=null, validOrNot=null, forLevel=null, forLevelName=N3)

回答

1

“主办单位”列的内容似乎被关联到creditType字段。请核查模版类定义。

1

实体类定义哪里有问题吗?我注解配置都是value形式。另外一点,我昨天调试的时候发现,调整一下实体类中的字段顺序就能读取到了,这是怎么回事?

3

字段顺序还原后,还能复现问题吗?

3

可以

0

项目工程有配置lombok.config吗?

lombok.toString.callSuper = CALL
lombok.equalsAndHashCode.callSuper= CALL
9

没有,跟这个有关系??

3

多谢,加了注解 @ExcelIgnoreUnannotated 搞定