读取本地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.rhkb.cn/news/17489.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【故障处理】- RMAN-06593: platform name ‘Linux x86 64-bitElapsed: 00:00:00.00‘

【故障处理】- RMAN-06593: platform name Linux x86 64-bitElapsed: 00:00:00.00 一、概述二、报错原因三、解决方法 一、概述 使用xtts迁移&#xff0c;在目标端进行恢复时&#xff0c;遇到RMAN-06593: platform name Linux x86 64-bitElapsed: 00:00:00.00’报错。 二、报错…

日志结构化处理:PO对象toString日志转JSON工具

日志结构化处理&#xff1a;PO对象toString日志转JSON工具 1. 解决的问题2. 下载地址 在Java项目中&#xff0c;PO&#xff08;Plain Old Java Object&#xff09;对象遍布各个角落&#xff0c;且常常伴随着大量的日志记录需求。传统的做法是通过toString方法直接打印这些对象&…

【云安全】云原生- K8S API Server 未授权访问

API Server 是 Kubernetes 集群的核心管理接口&#xff0c;所有资源请求和操作都通过 kube-apiserver 提供的 API 进行处理。默认情况下&#xff0c;API Server 会监听两个端口&#xff1a;8080 和 6443。如果配置不当&#xff0c;可能会导致未授权访问的安全风险。 8080 端口…

Ansible批量配置服务器免密登录步骤详解

一、准备工作 192.168.85.138 安装ansible&#xff0c;计划配置到139的免密 192.168.85.139 待配置免密 1. 生成SSH密钥对 在Ansible控制节点生成密钥对&#xff0c;用于后续免密认证&#xff1a; ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa 全部回车默认&#xff0c;无…

游戏引擎学习第99天

仓库:https://gitee.com/mrxiao_com/2d_game_2 黑板&#xff1a;制作一些光场(Light Field) 当前的目标是为游戏添加光照系统&#xff0c;并已完成了法线映射&#xff08;normal maps&#xff09;的管道&#xff0c;但还没有创建可以供这些正常映射采样的光场。为了继续推进&…

纪念日倒数日项目的实现-【纪念时刻-时光集】

纪念日/倒数日项目的实现## 一个练手的小项目&#xff0c;uniappnodemysql七牛云。 在如今快节奏的生活里&#xff0c;大家都忙忙碌碌&#xff0c;那些具有特殊意义的日子一不小心就容易被遗忘。今天&#xff0c;想给各位分享一个“纪念日”项目。 【纪念时刻-时光集】 一…

yanshee机器人初次使用说明(备注)-PyCharm

准备 需要&#xff1a; 1&#xff0c;&#xff08;优必选&#xff09;yanshee机器人Yanshee 开发者说明 2&#xff0c;手机-联网简单操控 / HDMI线与显示器和键鼠标-图形化开发环境 / 笔记本&#xff08;VNC-内置图形化开发环境/PyCharm等平台&#xff09;。 3&#xff0c;P…

webshell通信流量分析

环境安装 Apatche2 php sudo apt install apache2 -y sudo apt install php libapache2-mod-php php-mysql -y echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php sudo ufw allow Apache Full 如果成功访问info.php&#xff0c;则环境安…

uniapp - iconfont下载本地并且运用至项目上

1、项目中创建一个文件夹放置iconfont相关文件&#xff0c;例如src/assets/iconfont&#xff08;名称自己定义&#xff09; 2、在iconfont下载项目至本地 3、解压后把文件复制进1的文件夹中 4、修改src/assets/iconfont - iconfont.css里的font-face的src地址&#xff0c;修…

黑马Redis详细笔记(实战篇---短信登录)

目录 一.短信登录 1.1 导入项目 1.2 Session 实现短信登录 1.3 集群的 Session 共享问题 1.4 基于 Redis 实现共享 Session 登录 一.短信登录 1.1 导入项目 数据库准备 -- 创建用户表 CREATE TABLE user (id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT 用户ID,phone …

企业级高并发全链路优化:流量分发、边缘防护与服务治理的整合之道

文章目录 第一章&#xff1a;引入概览1.1 高并发时代的业务挑战与背景1.2 全链路思维在高并发架构中的必要性1.3 解决方案总览&#xff1a;技术演进与混合架构模式 第二章&#xff1a;流量分发与边缘网络2.1 DNS 解析与全球流量调度2.2 LVS 与 Nginx 集群&#xff1a;流量负载均…

Mysql中使用sql语句生成雪花算法Id

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

react传递函数与回调函数原理

为什么 React 允许直接传递函数&#xff1f; 回调函数核心逻辑 例子&#xff1a;父组件控制 Modal 的显示与隐藏 // 父组件 (ParentComponent.tsx) import React, { useState } from react; import { Modal, Button } from antd; import ModalContent from ./ModalContent;co…

DeepSeek、Kimi、文心一言、通义千问:AI 大语言模型的对比分析

在人工智能领域&#xff0c;DeepSeek、Kimi、文心一言和通义千问作为国内领先的 AI 大语言模型&#xff0c;各自展现出了独特的特点和优势。本文将从技术基础、应用场景、用户体验和价格与性价比等方面对这四个模型进行对比分析&#xff0c;帮助您更好地了解它们的特点和优势。…

国际主流架构框架整理【表格版】简介、适用场景、优缺点、中文名、英名全称,附TOGAF认证介绍

国际主流架构框架表格 国际主流架构框架架构框架英名全称中文名简介适用场景优缺点TOGAFThe Open Group Architecture Framework开放工作组体系结构框架是由The Open Group组织开发的一种企业架构框架&#xff0c;它提供了一套方法论、工具和术语&#xff0c;用于帮助组织设计…

缓存三大问题及其解决方案

缓存三大问题及其解决方案 1. 前言 ​ 在现代系统架构中&#xff0c;缓存与数据库的结合使用是一种经典的设计模式。为了确保缓存中的数据与数据库中的数据保持一致&#xff0c;通常会给缓存数据设置一个过期时间。当系统接收到用户请求时&#xff0c;首先会访问缓存。如果缓…

微信小程序自定义tabbar,跳转tabbar后页面加载路径不正确

我设置小程序自定义tabbar是两种角色&#xff0c;分两个菜单。 我需要在tabbar每一个菜单的页面onshow中都调用这个init方法&#xff0c;但是我在onshow有其他if判断&#xff0c;如果是出现错误后&#xff0c;init方法就不能执行&#xff0c;需要提前到最前面。

小程序canvas2d实现横版全屏和竖版逐字的签名组件(字帖式米字格签名组件)

文章标题 01 功能说明02 效果预览2.1 横版2.2 竖版 03 使用方式04 横向签名组件源码4.1 html 代码4.2 业务 Js4.3 样式 Css 05 竖向签名组件源码5.1 布局 Html5.2 业务 Js5.3 样式 Css 01 功能说明 技术栈&#xff1a;uniapp、vue、canvas 2d 需求&#xff1a; 实现横版的全…

stm32 lwip tcp服务端频繁接收连接失效问题解决(tcp_recved)

一、问题描述 最近用stmf429单片机作为TCP服务端遇到一个问题&#xff0c;就是客户端特别频繁的发送消息&#xff0c;过一段时间以后&#xff0c;客户端的请求不再被客户端接收到&#xff0c;而且服务器端监控的掉线回调函数也不会被调用&#xff0c;好像这个连接就凭空的消失…

让 DeepSeek R1 锐评一下自己

让 DeepSeek R1 锐评一下自己 1. 技术领域覆盖广泛&#xff0c;内容实用性突出2. 内容系统性强&#xff0c;适合阶段性学习3. 持续更新与技术敏锐度4. 潜在改进方向总结 突发奇想&#xff0c;让 AI 锐评一下自己~ Gorit 是一名活跃于技术领域的 CSDN 博主&#xff0c;其内容主…