EasyExcel写入内容匹配不上解决方法

简介: EasyExcel写入内容匹配不上解决方法

一、问题

根据读入类的注解,默认只读取表格A-H列的数据。导入的时候会读取H列之外的数据,有可能导致异常;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题
public class ShopImportExcelVO extends RowIndex {
    /**
     * 商品名称
     */
    @ExcelProperty(value = "商品ID")
    private Long id;
    /**
     * 商品名称
     */
    @ExcelProperty(value = "商品名称(必填)")
    private String name;
    /**
     * 商品分类
     */
    @ExcelProperty(value = "商品分类名称ID(必填)")
    private Long systemClassificationId;
    /**
     * 标准价格
     */
    @ExcelProperty(value = "标准价格(必填)")
    private BigDecimal price;
    /**
     * 最低价格
     */
    @ExcelProperty(value = "最低价格(必填)")
    private BigDecimal minPrice;
    /**
     * 商品状态(0正常 1停用)
     */
    @ExcelIgnore
    private Integer status;
 
    @ExcelIgnore
    private Integer sort;
 
 
    /**
     * 服务字段
     */
    @ExcelProperty(value = "服务字段")
    private String serviceField;
    /**
     * 成本费用标准
     */
    @ExcelProperty(value = "成本费用标准")
    private String costField;
    /**
     * 补充报考字段
     */
    @ExcelProperty(value = "补充报考字段")
    private String examinationField;
 
    @ExcelIgnore
    private BigDecimal accountsPayable;
 
    /**
     * 备注
     */
    @ExcelProperty(value = "备注")
    private String remark;
 
}
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.exception.ExcelDataConvertException;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.CellExtra;
import com.alibaba.excel.read.metadata.holder.ReadRowHolder;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
 
import java.util.List;
import java.util.Map;
 
@Slf4j
public class ShopExcelListener extends AnalysisEventListener<ShopImportExcelVO> {
 
    List<ShopImportExcelVO> res;
    public ShopExcelListener(List<ShopImportExcelVO> res) {
        this.res=res;
    }
 
    @Override
    public void onException(Exception exception, AnalysisContext context) throws Exception {
        log.error("解析失败,但是继续解析下一行:{}", exception.getMessage());
        if (exception instanceof ExcelDataConvertException) {
            ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException)exception;
            log.error("第{}行,第{}列解析异常,数据为:{}", excelDataConvertException.getRowIndex(),
                    excelDataConvertException.getColumnIndex(), excelDataConvertException.getCellData());
        }
    }
 
    @Override
    public void invokeHead(Map<Integer, CellData> headMap, AnalysisContext context) {
 
    }
 
    @Override
    public void invoke(ShopImportExcelVO data, AnalysisContext context) {
        ReadRowHolder readRowHolder = context.readRowHolder();
        Integer rowIndex = readRowHolder.getRowIndex();
        data.setRowIndex(rowIndex+1);
        res.add(data);
    }
 
 
 
    @Override
    public void extra(CellExtra extra, AnalysisContext context) {
 
    }
 
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        log.info("所有数据解析完成!");
        log.info("解析数据:{}", JSON.toJSONString(res));
    }
}

二、官方文档

只要部分字段去匹配excel(excel写入内容匹配不上等)

easyexcel默认是全部实体字段都会参与读写,不管你是否加了@ExcelProperty注解


  • 如果您的版本低于2.1.6,建升级到以上版本
  • 升级了还有,在类的最上面加入@ExcelIgnoreUnannotated注解,加入这个注解后只有加了@ExcelProperty才会参与读写。


安装文档,增加注解@ExcelIgnoreUnannotated,问题解决。

相关文章
Apifox测试导出excel接口
Apifox测试导出excel接口
1773 0
|
前端开发 easyexcel Java
Java+EasyExcel实现文件导入导出,导入导出如此简单
项目中需要Excel文件的导入与导出Excel并下载,例如,导入员工信息,导出员工信息,手动输入比较繁琐,所以本篇博文教大家如何在Java中导入Excel文件与导出Excel文件
15868 3
Java+EasyExcel实现文件导入导出,导入导出如此简单
|
关系型数据库 MySQL 网络安全
|
监控 druid Java
Spring Boot 3 集成 Druid 连接池详解
在现代的Java应用中,使用一个高效可靠的数据源是至关重要的。Druid连接池作为一款强大的数据库连接池,提供了丰富的监控和管理功能,成为很多Java项目的首选。本文将详细介绍如何在Spring Boot 3项目中配置数据源,集成Druid连接池,以实现更高效的数据库连接管理。
11658 2
Spring Boot 3 集成 Druid 连接池详解
|
NoSQL Java Redis
Spring boot整合Redis实现发布订阅(超详细)
Redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收信息。微信,微博,关注系统 Redis客户端可以订阅任意数量的频道
9161 0
Spring boot整合Redis实现发布订阅(超详细)
|
安全 Java 编译器
springboot 整合表达式计算引擎 Aviator 使用示例详解
本文详细介绍了Google Aviator 这款高性能、轻量级的 Java 表达式求值引擎
1947 6
|
前端开发 Java
后端BUG系列之:SpringBoot上传文件太大 报错 Maximum upload size exceeded
这篇文章讨论了SpringBoot应用中上传文件过大导致的错误"Maximum upload size exceeded",并提供了通过修改`application.properties`文件中的上传限制配置来解决这个问题的方法。
|
数据处理 Apache 流计算
实时计算引擎 Flink:从入门到深入理解
本篇详细介绍了Apache Flink实时计算引擎的基本概念和核心功能。从入门到深入,逐步介绍了Flink的数据源与接收、数据转换与计算、窗口操作以及状态管理等方面的内容,并附带代码示例进行实际操作演示。通过阅读本文,读者可以建立起对Flink实时计算引擎的全面理解,为实际项目中的实时数据处理提供了有力的指导和实践基础。
5488 2
|
XML 存储 Java
SpringBoot集成Flowable:构建强大的工作流引擎
在企业级应用开发中,工作流管理是核心功能之一。Flowable是一个开源的工作流引擎,它提供了BPMN 2.0规范的实现,并且与SpringBoot框架完美集成。本文将探讨如何使用SpringBoot和Flowable构建一个强大的工作流引擎,并分享一些实践技巧。
4062 0
|
JavaScript 前端开发 easyexcel
基于SpringBoot + EasyExcel + Vue + Blob实现导出Excel文件的前后端完整过程
本文展示了基于SpringBoot + EasyExcel + Vue + Blob实现导出Excel文件的完整过程,包括后端使用EasyExcel生成Excel文件流,前端通过Blob对象接收并触发下载的操作步骤和代码示例。
2978 0
基于SpringBoot + EasyExcel + Vue + Blob实现导出Excel文件的前后端完整过程