easyExcel如何无表头读取excel数据,java实现

 public HashMap<String, List<String>> processClassify0815() {
        HashMap<String, List<String>> equipmentMap = new HashMap<>();

        // 使用 ClassLoader 从 resources 目录读取文件
        String filePath = "TemporaryExcel/树形结构模版.xlsx"; // 相对路径
        try(InputStream fileInputStream = ExcelReader.class.getClassLoader().getResourceAsStream(filePath)) {
//            FileInputStream fileInputStream = new FileInputStream("C:\\Users\\Administrator\\Desktop\\广航导入的系统表格\\0814系统树\\树形结构模版.xlsx");

            // 使用EasyExcel读取数据
            EasyExcel.read(fileInputStream, new AnalysisEventListener<Map<Integer, String>>() {
                private boolean isFirstRow = true;
                private List<String> headers = new ArrayList<>();

                @Override
                public void invoke(Map<Integer, String> rowData, AnalysisContext context) {
                    if (isFirstRow) {
                        // 第一行作为表头
                        headers = new ArrayList<>(rowData.values());
                        isFirstRow = false;
                    } else {
                        // 从第二行开始,填充HashMap
                        for (int i = 0; i < headers.size(); i++) {
                            String header = headers.get(i);
                            String value = rowData.get(i);
                            // 如果值为空,可以选择跳过或添加空值
                            if (value != null && !value.trim().isEmpty()) {
                                equipmentMap.computeIfAbsent(header, k -> new ArrayList<>()).add(value);
                            }
                        }
                    }
                }

                @Override
                public void doAfterAllAnalysed(AnalysisContext context) {
                    // 读取完成后的操作
                    System.out.println("读取完成,设备分类信息已存储到 HashMap 中。");
                }
            }).sheet().doRead();

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }

        // 打印 HashMap
        for (String key : equipmentMap.keySet()) {
            System.out.println(key + ": " + equipmentMap.get(key));
        }

        return equipmentMap;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值