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

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

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 中。

示例代码

java 复制代码
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 文件路径。

相关推荐
一点程序8 分钟前
基于SpringBoot的选课调查系统
java·spring boot·后端·选课调查系统
C雨后彩虹11 分钟前
计算疫情扩散时间
java·数据结构·算法·华为·面试
2601_9498095915 分钟前
flutter_for_openharmony家庭相册app实战+我的Tab实现
java·javascript·flutter
vx_BS8133044 分钟前
【直接可用源码免费送】计算机毕业设计精选项目03574基于Python的网上商城管理系统设计与实现:Java/PHP/Python/C#小程序、单片机、成品+文档源码支持定制
java·python·课程设计
2601_9498683644 分钟前
Flutter for OpenHarmony 电子合同签署App实战 - 已签合同实现
java·开发语言·flutter
达文汐1 小时前
【困难】力扣算法题解析LeetCode332:重新安排行程
java·数据结构·经验分享·算法·leetcode·力扣
培风图南以星河揽胜1 小时前
Java版LeetCode热题100之零钱兑换:动态规划经典问题深度解析
java·leetcode·动态规划
启山智软2 小时前
【中大企业选择源码部署商城系统】
java·spring·商城开发
我真的是大笨蛋2 小时前
深度解析InnoDB如何保障Buffer与磁盘数据一致性
java·数据库·sql·mysql·性能优化
怪兽源码2 小时前
基于SpringBoot的选课调查系统
java·spring boot·后端·选课调查系统