Java 使用EasyExcel解析导入的Excel文件

        最近在做项目时,有遇到需要使用excel导入的场景,以前也有写过使用 Apache.poi 来解析导入数据,但整体解析逻辑比较繁琐,封装成工具类后也不是很好用(这个可能是我个人技术原因,和poi无关)。

        这次开发时,在网上找了个更加简洁的方式,即通过使用 alibaba 的 easyExcel 来解析,整个过程更加友好,不管是获取标题、每一行数据还是整体的结果,都更加便利,不需要关心解析逻辑,只要按需实现我们自身的业务逻辑就好。以下为我个人对此整理的一个简单示例:

一、导包

        <!--easyExcel-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>3.0.5</version>
        </dependency>

二、代码实现

    public static List<Map> readExcel(FileInputStream fileInputStream) {
        List<Map> resultList = new ArrayList<>();

        EasyExcel.read(fileInputStream,new AnalysisEventListener<Map<Integer, String>>() {

            private Map<Integer, String> headMap;

            //获取标题数据
            @Override
            public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
                this.headMap = headMap;
                System.out.println("解析到的表头数据: " + headMap);
            }

            //处理每一行数据
            @Override
            public void invoke(Map<Integer, String> rowData, AnalysisContext context) {
                //把key替换成标题
                Map temp = new HashMap();
                for (Map.Entry<Integer, String> entry : rowData.entrySet()) {
                    temp.put(headMap.get(entry.getKey()), entry.getValue());
                }
                resultList.add(temp);
            }

            @Override
            public void doAfterAllAnalysed(AnalysisContext context) {
                //所有行都解析完成
            }
        }).headRowNumber(2).sheet().doRead();

        return resultList;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值