当前位置: 首页 > article >正文

读取本地excel并生成map,key为第一列,value为第二列

添加依赖:在 pom.xml 文件中添加以下依赖:

<dependencies>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>5.2.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>5.2.3</version>
    </dependency>
</dependencies>

编写 Java 代码:使用 Apache POI 读取 Excel 文件,并将第一列和第二列的数据存储到 Map 中。
示例代码

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class ExcelReader {
    public static Map<String, String> readExcelToMap(String filePath) throws IOException {
        Map<String, String> map = new HashMap<>();
        try (FileInputStream fis = new FileInputStream(new File(filePath));
             Workbook workbook = new XSSFWorkbook(fis)) {
            // 获取第一个工作表
            Sheet sheet = workbook.getSheetAt(0);
            // 遍历每一行
            for (int i = 0; i <= sheet.getLastRowNum(); i++) {
                Row row = sheet.getRow(i);
                if (row != null) {
                    // 获取第一列单元格
                    Cell keyCell = row.getCell(0);
                    // 获取第二列单元格
                    Cell valueCell = row.getCell(1);
                    if (keyCell != null && valueCell != null) {
                        // 获取键和值
                        String key = getCellValueAsString(keyCell);
                        String value = getCellValueAsString(valueCell);
                        // 将键值对添加到 Map 中
                        map.put(key, value);
                    }
                }
            }
        }
        return map;
    }

    private static String getCellValueAsString(Cell cell) {
        switch (cell.getCellType()) {
            case STRING:
                return cell.getStringCellValue();
            case NUMERIC:
                if (DateUtil.isCellDateFormatted(cell)) {
                    return cell.getDateCellValue().toString();
                } else {
                    return String.valueOf((long) cell.getNumericCellValue());
                }
            case BOOLEAN:
                return String.valueOf(cell.getBooleanCellValue());
            case FORMULA:
                return cell.getCellFormula();
            default:
                return "";
        }
    }

    public static void main(String[] args) {
        String filePath = "path/to/your/excel/file.xlsx";
        try {
            Map<String, String> resultMap = readExcelToMap(filePath);
            // 打印 Map 中的键值对
            for (Map.Entry<String, String> entry : resultMap.entrySet()) {
                System.out.println(entry.getKey() + " : " + entry.getValue());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

代码解释
readExcelToMap 方法:
该方法接受一个 Excel 文件的路径作为参数,返回一个 Map<String, String> 对象。
使用 FileInputStream 读取 Excel 文件,并使用 XSSFWorkbook 创建一个工作簿对象。
获取第一个工作表,并遍历每一行。
对于每一行,获取第一列和第二列的单元格,并将其值作为键值对添加到 Map 中。
getCellValueAsString 方法:
该方法用于将单元格的值转换为字符串类型。
根据单元格的类型(如字符串、数字、布尔值、公式等),采用不同的方式获取其值。
main 方法:
调用 readExcelToMap 方法读取 Excel 文件,并将结果存储在 resultMap 中。
遍历 resultMap,打印其中的键值对。
注意事项
上述代码假设 Excel 文件是 .xlsx 格式,如果是 .xls 格式,需要将 XSSFWorkbook 替换为 HSSFWorkbook。
请将 filePath 替换为实际的 Excel 文件路径。


http://www.kler.cn/a/545438.html

相关文章:

  • CSS实现与文字长度相同的下划线
  • CSS实现自上层放大动画
  • ANI-AGI-ASI
  • Postman配置环境变量(超详细的)
  • 分享 UniApp 中超好看的卡片阴影样式
  • 分布式环境下的锁机制:Redis与Redisson的应用探讨
  • js 正则规则 和 常用正则表达式
  • PyQT项目如何在Linux中自启显示界面
  • k8s启空容器用于排查问题
  • Git命令摘录
  • 从递归到动态规划(一维)
  • js实现点击音频实现播放功能
  • redis RDB AOP区别,文件格式及内容
  • Java开发中的连接池技术介绍
  • 【设计模式】【行为型模式】迭代器模式(Iterator)
  • 探索ELK 的魅力
  • C#的async异步方法里如果使用了await,那么它跟同步方法有什么区别?
  • Windows Docker笔记-dockerfile
  • Windows 11 卸载 Edge
  • 基于华为云镜像加速器的Docker环境搭建与项目部署指南