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,问题解决。

相关文章
|
存储 缓存 安全
面试题-HashMap底层原理与HashTable的区别
字节跳动面试题-HashMap底层原理与HashTable的区别
594 0
|
8月前
|
存储 人工智能 前端开发
使用Spring AI Alibaba构建智能体Agent
本文详解使用Spring AI Alibaba框架,结合DashScope和React Agent,通过两个实战案例(基础测试+生产级应用),教你快速构建Java AI智能体
3286 7
|
6月前
|
Python Windows
Python 3.13 安装教程:环境变量配置+自定义路径
Python是简洁易学、开源跨平台的面向对象编程语言,成熟稳定,广泛用于大型项目开发。本文详解Python 3.13在64位Windows系统的下载、以管理员身份安装、PATH环境变量配置、自定义路径及IDLE验证全流程,助你快速完成本地开发环境搭建。(239字)
1791 0
|
前端开发
Promise.all()方法的作用是什么?
Promise.all()方法的作用是什么?
892 121
|
11月前
|
JavaScript 开发工具 git
IDEA自动导入包 自动编译 自动保存
IDEA自动导入包 自动编译 自动保存
437 11
|
前端开发 安全 Java
基于springboot+vue开发的会议预约管理系统
一个完整的会议预约管理系统,包含前端用户界面、管理后台和后端API服务。 ### 后端 - **框架**: Spring Boot 2.7.18 - **数据库**: MySQL 5.6+ - **ORM**: MyBatis Plus 3.5.3.1 - **安全**: Spring Security + JWT - **Java版本**: Java 11 ### 前端 - **框架**: Vue 3.3.4 - **UI组件**: Element Plus 2.3.8 - **构建工具**: Vite 4.4.5 - **状态管理**: Pinia 2.1.6 - **HTTP客户端
1789 4
基于springboot+vue开发的会议预约管理系统
|
Ubuntu Shell Linux
docker安装tar包安装
docker安装tar包安装
3190 2
|
Java 数据库连接 mybatis
mybatis判断list不为空
mybatis判断list不为空
785 0
|
存储 Java 测试技术
阿里巴巴java开发手册
这篇文章是关于阿里巴巴Java开发手册的整理,内容包括编程规约、异常日志、单元测试、安全规约、MySQL数据库使用以及工程结构等方面的详细规范和建议,旨在帮助开发者编写更加规范、高效和安全的代码。