0803导入文件报-EasyExcel 读取数据为空

937 阅读1分钟

0803导入文件报-EasyExcel 读取数据为空

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情

一、学习链接:

1、https://www.cnblogs.com/xuejun-blog/p/14977791.html
2、https://blog.csdn.net/xcl_language/article/details/122015636
3、https://blog.csdn.net/m290345792/article/details/124623816

二、官网地址:

https://www.yuque.com/easyexcel

三、问题描述

文件上传的时候:MultipartFile file,通过com.alibaba.excel.EasyExcel类
使用read(File file, Class head, ReadListener readListener)
read方法,映射到指定的对象之后会出现null的问题。真实的原因是:使用到了读取的监听器,它会自动对数据的格式进行识别和映射。所以,有可能数据符合要求,但是,里面的文档格式加粗、字体、字体大小都有可能导致不对等置null。
public static ExcelReaderBuilder read(File file, Class head, ReadListener readListener) {
    ExcelReaderBuilder excelReaderBuilder = new ExcelReaderBuilder();
    excelReaderBuilder.file(file);
    if (head != null) {
        excelReaderBuilder.head(head);
    }

    if (readListener != null) {
        excelReaderBuilder.registerReadListener(readListener);
    }

    return excelReaderBuilder;
}   


    /**
     * Custom type listener run after default
     *
     * @param readListener
     * @return
     */
    public T registerReadListener(ReadListener<?> readListener) {
        if (parameter().getCustomReadListenerList() == null) {
            parameter().setCustomReadListenerList(ListUtils.newArrayList());
        }
        parameter().getCustomReadListenerList().add(readListener);
        return self();
    }

四、问题解决:

2.1、导入依赖:
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>easyexcel</artifactId>
	<version>3.1.1</version>
</dependency>
2.2、先写一个对应这个导入方法的导出功能,作为模版表,给予用户进行模版下载和二次编辑导入。

五、拓展其他报错问题:

1. 实体类添加了@Accessors注解(全null2.excel文件中列名 和 设置的实体类属性字段注解@ExcelProperty(value = “”)中value的值设置的不一样
@ExcelProperty(value = "A")
如果有多个字段名一样的列,不要重名,不然字段可能不能正确匹配,当然,也可以使用index属性来区分它们:

@ExcelProperty(value = "A", index = 0)
@ExcelProperty(value = "A", index = 1)
1
2
或者这样:

@ExcelProperty(index = 0)
@ExcelProperty(index = 1)
3.实体类@ExcelProperty中的value给了多个值(全null)
4.实体类属性名命名不遵循驼峰命名法