easyExcel导入报错excelType

使用easyExcel导入报错:

Convert excel format exception.You can try specifying the ‘excelType’ yourself




项目中采用easyExcel版本3.1.1pom自行引入,官网:easyExce官网

本地已写好demo,通过postman调用,可以成功,如下:

package com.example.demo;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.util.ListUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
@RestController
@Slf4j
public class EasyExcelBIoController {
    /**
     * 文件上传
     * <p>1. 创建excel对应的实体对象 参照{@link }
     * <p>2. 由于默认一行行的读取excel,所以需要创建excel一行一行的回调监听器,参照{@link }
     * <p>3. 直接读即可
     */
    @PostMapping("upload")
    public String upload(MultipartFile file) throws IOException {
        InputStream inputStream = new BufferedInputStream(file.getInputStream());
        try {
            String fileName = file.getOriginalFilename();
            // 写法2:
            // 匿名内部类 不用额外写一个DemoDataListener
            // 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
            EasyExcel.read(inputStream, ImportHistoryJsonDto.class, new ReadListener<ImportHistoryJsonDto>() {
                /**
                 * 单次缓存的数据量
                 */
                public static final int BATCH_COUNT = 1;
                /**
                 *临时存储
                 */
                private List<ImportHistoryJsonDto> cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
                @Override
                public void invoke(ImportHistoryJsonDto data, AnalysisContext context) {
                    Integer row = context.readRowHolder().getRowIndex();
                    data.setFileName(fileName);
                    data.setRow(row);
                    cachedDataList.add(data);
                    if (cachedDataList.size() >= BATCH_COUNT) {
                        saveData();
                        // 存储完成清理 list
                        cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
                    }
                }
                //最后一次保存走这里
                @Override
                public void doAfterAllAnalysed(AnalysisContext context) {
                    saveData();
                }
                /**
                 * 加上存储数据库
                 */
                private void saveData() {
                    System.out.println(1);
                }
            }).sheet().doRead();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            inputStream.close();
        }
        return "success";
    }
}

上传至项目中,因项目没法本地调试,直接发布到环境在线测试,报错如下:

在这里插入图片描述

第一时间检查excel类型没问题,因为本地跑是可以的,然后百度无果。

百度基本都是说流的问题,尝试过也没用。

在这里插入图片描述

最后去官网查看如下:

在这里插入图片描述

除了XLSX CSV XLS三种类型其他都报标题的错,那么好,我的是小写xlsx,改成大写问题解决。

是不是很简单,送给还在路中的同学

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值