【工作中碰到Excel】EasyExcel读取Excel为Map

和上一篇读取为实体类类似,在这里可以读取为Map,Map有一个好处,可以使一些代码变得通用。
先定义一个Listener,和之前的实体类监听器类似,定义一个存储每一行数据的dataList,
在invoke代码中,将他们存到dataList。

监听器代码

package org.example.excel.easyexcel.second;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import lombok.Getter;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@Getter
public class ReadAsMapListener extends AnalysisEventListener<Map<String, Object>> {
    public List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();

    public void invoke(Map<String, Object> data, AnalysisContext context) {
        dataList.add(data);
    }

    public void doAfterAllAnalysed(AnalysisContext context) {
        System.out.println("read finish");
    }
}

读取代码

public class ReadAsMapMain {
    public static void main(String[] args) {
        String path = "yourExcel.xlsx";
        ReadAsMapListener readAsMapListener = new ReadAsMapListener();
        EasyExcel.read(path)
                .sheet(1)
                .headRowNumber(1)
                .registerReadListener(readAsMapListener)
                .doRead();
        List<Map<String, Object>> dataList = readAsMapListener.getDataList();
        System.out.println(JSONUtil.toJsonStr(dataList));
    }
}

结果

源文件

在这里插入图片描述

读取结果

在这里插入图片描述
可以看到key是 index,value就是对应的值

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用阿里巴巴的 EasyExcel 库来读取 Excel 并将其转换为 List<Map>。 以下是一个示例代码: ```java // 读取 Excel 文件 InputStream inputStream = new FileInputStream("path/to/excel/file.xlsx"); ExcelReader excelReader = new ExcelReader(inputStream, ExcelTypeEnum.XLSX, null, new AnalysisEventListener<List<String>>() { @Override public void invoke(List<String> rowData, AnalysisContext analysisContext) { // 处理每一行数据 Map<String, String> rowMap = new HashMap<>(); for (int i = 0; i < rowData.size(); i++) { rowMap.put("col_" + i, rowData.get(i)); } dataList.add(rowMap); } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { // Excel 读取完成后的回调方法 } }); // 读取 Sheet excelReader.read(new Sheet(1, 1)); // 关闭 Excel 读取excelReader.finish(); ``` 在上面的代码,我们使用 `ExcelReader` 类来读取 Excel 文件。在 `AnalysisEventListener` ,我们实现了两个回调方法:`invoke` 和 `doAfterAllAnalysed`。`invoke` 方法会在每读取一行数据时被调用,我们在其将该行数据转换为一个 Map,并添加到 `dataList` 。`doAfterAllAnalysed` 方法则会在 Excel 文件全部读取完成后被调用。 最后,我们使用 `Sheet` 类来指定要读取的 Sheet,然后调用 `read` 方法开始读取 Excel 文件。读取完成后,我们需要调用 `finish` 方法关闭 Excel 读取器。 注意:在示例代码,我们假设 Excel 文件的第一行是表头,因此不会被读取。如果你的 Excel 文件没有表头,需要在 `Sheet` 构造方法将第二个参数设为 0,例如 `new Sheet(1, 0)`。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值