EasyExcel 解析数据一直为空

文章讨论了在使用Lombok的@Accessors(chain=true)注解时,可能导致EasyExcel解析数据为空的问题,原因是该注解使实体对象支持链式编程。解决方案是将相关实体类的@Accessors(chain=false)注解设置为false。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

EasyExcel 解析数据一直为空,导致插入数据库没有数据

原因:使用lombok插件,在lombok中有一个注解@Accessors(chain =true),其中chain的中文含义是链式的,设置为true,表示该实体对象支持链式编程,否则不支持链式编程。

使用@Accessors(chain=true)就导致了excel读取为空,虽然我们没有显式的声明这个注解,但是也出现了这个问题,目前还没有在lombok的其他注解上发现这个注解,默认值也是false

解决方法:实体类加上

@Accessors(chain = false)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName("employee")
@Accessors(chain = false)
public class EmployeeDO implements Serializable {
    @TableId("employee_id")
    private Long employeeId;
    @TableField(value = "employee_name")
    private String employeeName;
    private Integer age;
    private String gender;
    @TableField(value = "create_time")
    private LocalDateTime createTime;
}
EasyExcel 是由阿里巴巴开源的一个基于 JavaExcel 操作工具,它简化了对 Excel 文件的操作。当涉及到导数据时,我们可能会遇到一些情况,比如希望只导数据行。 ### 实现 EasyExcel数据不为 为了确保通过 EasyExcelExcel 数据不包含白记录,你可以采取以下几种策略: #### 1. **过滤源数据** - 在将数据传递给 `EasyExcel` 写入之前,在业务逻辑层面上先处理好你要写入的数据集。 - 确保你提供的集合中没有全字段都为 null 或者是不符合预期的数据项。例如可以在添加到列表前判断对象是否符合条件(即有有效信息),只有满足条件的对象才加入最终用于导的 List 中去。 ```java List<YourDataClass> filteredData = originalData.stream() .filter(data -> data != null && !isEmptyRow(data)) // 自定义 isEmptyRow 来检查某一行是否有意义的内容 .collect(Collectors.toList()); ``` #### 2. **自定义单元格样式处理器** 如果你想要更精细地控制哪些列不允许为,并且在某些情况下允许特定列为,则可以考虑编写一个自定义注解及相应的监听器或者直接修改实体属性上的注释规则来达到目的。 不过对于简单的“仅导行”的需求来说,第一种做法已经足够并且简单明了。 #### 示例代码片段 这里给一段简化的示例代码展示如何利用 Stream API 进行数据筛选后再进行导操作: ```java // ... 引入库等略 ... public void exportNotNULL() { String fileName = "path/to/output/excel/not_null_data.xlsx"; try { List<DataModel> dataList = getDataFromSomewhere(); // 使用流式API移除所有值均为null的条目 List<DataModel> cleanedList = dataList.stream().filter(item -> item.hasNonEmptyFields()).toList(); // 将清理后的list写excel文件内. EasyExcel.write(fileName).sheet("Sheet1").doWrite(cleanedList); System.out.println("Export completed successfully."); } catch (Exception e) { log.error("Failed to write excel file",e); } } ``` 在这个例子当中假定 DataModel 类有一个名为 hasNonEmptyFields() 的布尔型函数返回 true 表明该实例至少存在一项非内容;反之则false表示此条记录不应该现在结果集中. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值