基于阿里的EasyExcel早期版本中行数据对应不上的问题解析

前言

开发中,对于开发者而言跟Excel打交道似乎是无可避免的,特别是代码和Excel之间数据的交互上。现在主流的poi工具有很多,但是在性能上、易用性上或多或少会存在一些小小的不足,于是alibaba开源工具easyexcel诞生了。
在使用easyexcel的时候,自己也遇到了一些坑,自己百度了很久都没人提到这个问题,于是自己看着源码一步一步解决了这个问题,同时也在这分享出来参考!

实战

1、导入一个相关依赖即可!

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>2.0.0-beta6</version>
        </dependency>

2、读取(上传)Excel文件,使用上非常的简单,只要几行代码。

public class EasyExcelDemo {

    public static void main(String[] args) {
        String path = "E:\\tmp\\demo.xlsx";
        // 自定义读取每一行数据的事件监听
        ReadListen readListen = new ReadListen();
        // 开始读取Excel数据
        ExcelReader reader = EasyExcel.read(path, readListen).build();
        // 读取第一个sheet,readSheet默认是读取第一个,可以自定义
        ReadSheet readSheet = EasyExcel.readSheet().build();
        // 开始读取数据
        reader.read(readSheet);
        // 这里千万别忘记关闭,读的时候会创建临时文件,到时磁盘会崩的
        reader.finish();
    }

}

3、自定义ReadListen,主要是为了装数据,方便获取和使用,具体怎么调到这个方法的,以及出现的问题点在哪,往下走。。。

public class ReadListen<T> extends AnalysisEventListener<T> {

    private List<T> sheetData = new ArrayList<>(10);

    @Override
    public void invoke(T t, AnalysisContext analysisContext) {
        sheetData.add(t);
        System.out.println(t);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
    // Excel数据解析完成后,想要实现的业务逻辑
        System.out.println("excel data resolve finish!!!");
    }
}

4、开始源码分析,easyexcel怎么读取数据,以及问题点分析解决!
4.1 当调用reader.read(readSheet);时,进入

    public ExcelReader read(ReadSheet readSheet) {
        checkFinished();
       // 开始进入解析sheet
        excelAnalyser.analysis(readSheet);
        return this;
    }

我们只要分析excelAnalyser.analysis(readSheet);,进入继续

analysisContext.currentSheet(excelExecutor, readSheet);
try {
// 真正解析sheet表格的地方
    excelExecutor.execute();
} catch (ExcelAnalysisStopException e) {
    if (LOGGER.
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值