easyExcel解析多sheet页,最后用map存

这是一个Java工具类方法,用于从Excel文件中按指定参数读取数据并转换为Map列表。方法接受文件路径、工作表编号、起始行号、表头行号和读取行数作为参数,返回一个Map列表。在EasyExcel库的支持下,该方法实现了事件监听器来解析Excel数据,只读取指定范围的行,并在解析完成后输出日志信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工具类

废话不多说,直接上工具类

 /**
     *
     * @param filePath
     * @param sheetNo  sheet位置  从0开始
     * @param startRowNo 开始读取的行号  从0开始
     * @param headRow  表头行号 从1开始 只读取数据,从0开始 返回的map带表头
     * @param readRow  读取行数,-1表示读取所有行
     * @return List<Map<String, Object>>
     */
    public static List<Map<String, Object>> readExcelToMap(String filePath, int sheetNo, int startRowNo, int headRow, int readRow) {
        List<Map<String, Object>> resultList = new ArrayList<>();

        EasyExcel.read(filePath, new AnalysisEventListener<Map<String, Object>> () {
            @Override
            public void invoke(Map<String, Object> data, AnalysisContext context) {
                //当前行号
                Integer currentRowNo = context.readRowHolder().getRowIndex();
                //判断当前行号是否在读取范围内
                if (currentRowNo >= startRowNo) {
                    //如果读取所有,或者 当前行没有达到行数限制  则解析数据
                    if (readRow == -1 || currentRowNo < startRowNo + readRow) {
                        resultList.add(data);
                    }
                }
            }
            @Override
            public void doAfterAllAnalysed(AnalysisContext context) {
                log.info("excel数据解析完成,sheetName:{},sheetNo:{}",context.readSheetHolder().getSheetName(),context.readSheetHolder().getSheetNo());
            }

        }).sheet(sheetNo).headRowNumber(headRow).doRead();

        return resultList;
    }

使用方法
  public static void main(String[] args) {
        List<Map<String, Object>> fyndiqEconomyInvoices = ExcelUtils.readExcelToMap("C:\\Users\\admin\\Downloads\\fyndiq3.1-3.31到账核销数据.xlsx", 0, 0, 0, -1);
        for (Map<String, Object> fyndiqEconomyInvoice : fyndiqEconomyInvoices) {
            System.out.println(fyndiqEconomyInvoice);
        }

    }

工具类传参,是否需要带表头,从第几行开始 注释也都写的很清楚。~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值