读取本地excel删除第一行,并生成List数组
在 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 文件,删除首行,把其余行数据存入 List。
示例代码
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.ArrayList;
import java.util.List;public class ExcelReader {public static List<List<String>> readExcelWithoutFirstRow(String filePath) throws IOException {List<List<String>> dataList = new ArrayList<>();try (FileInputStream fis = new FileInputStream(new File(filePath));Workbook workbook = new XSSFWorkbook(fis)) {// 获取第一个工作表Sheet sheet = workbook.getSheetAt(0);// 从第二行开始遍历for (int i = 1; i <= sheet.getLastRowNum(); i++) {Row row = sheet.getRow(i);if (row != null) {List<String> rowData = new ArrayList<>();// 遍历当前行的每个单元格for (int j = 0; j < row.getLastCellNum(); j++) {Cell cell = row.getCell(j);if (cell != null) {rowData.add(getCellValueAsString(cell));} else {rowData.add("");}}dataList.add(rowData);}}}return dataList;}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 {List<List<String>> resultList = readExcelWithoutFirstRow(filePath);// 打印 List 中的数据for (List<String> row : resultList) {for (String cellValue : row) {System.out.print(cellValue + "\t");}System.out.println();}} catch (IOException e) {e.printStackTrace();}}
}
代码解释
readExcelWithoutFirstRow 方法:
该方法接收一个 Excel 文件路径作为参数,返回一个 List<List> 对象。
利用 FileInputStream 读取 Excel 文件,借助 XSSFWorkbook 创建工作簿对象。
获取首个工作表,从第二行(索引为 1)开始遍历。
针对每一行,遍历其每个单元格,把单元格的值存入 rowData 列表,再将 rowData 列表添加到 dataList 中。
getCellValueAsString 方法:
此方法用于把单元格的值转为字符串类型。
依据单元格的类型(像字符串、数字、布尔值、公式等),采用不同方式获取其值。
main 方法:
调用 readExcelWithoutFirstRow 方法读取 Excel 文件,将结果存于 resultList 中。
遍历 resultList,打印其中的数据。
注意事项
上述代码假定 Excel 文件为 .xlsx 格式,若为 .xls 格式,需把 XSSFWorkbook 替换成 HSSFWorkbook。
要把 filePath 替换成实际的 Excel 文件路径。
相关文章:
读取本地excel删除第一行,并生成List数组
在 pom.xml 里添加如下依赖: <dependencies><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.3</version></dependency><dependency><groupId>org.ap…...
Vivado生成edif网表及其使用
介绍如何在Vivado中将模块设为顶层,并生成相应的网表文件(Verilog文件和edif文件),该过程适用于需要将一个模块作为顶层设计进行综合,并生成用于其他工程中的网表文件的情况。 例如要将fpga_top模块制作成网表给其它工…...
JAVA生产环境(IDEA)排查死锁
使用 IntelliJ IDEA 排查死锁 IntelliJ IDEA 提供了强大的工具来帮助开发者排查死锁问题。以下是具体的排查步骤: 1. 编写并运行代码 首先,我们编写一个可能导致死锁的示例代码: public class DeadlockExample {private static final Obj…...
Mac 下使用多版本 Node
一、导读 使用 n 实现 Mac 下 Nodejs 的多版本切换,需要先安装一个版本的 Node.js,然后使用 npm 安装 n,再通过 n 管理 node 的多版本切换。 二、使用 npm 全局安装 n sudo npm install -g n 三、根据需求安装指定版本的 node sudo -E n…...
AI学习记录 - 最简单的专家模型 MOE
代码 import torch import torch.nn as nn import torch.nn.functional as F from typing import Tupleclass BasicExpert(nn.Module):# 一个 Expert 可以是一个最简单的, linear 层即可# 也可以是 MLP 层# 也可以是 更复杂的 MLP 层(active function 设…...
【2025深度学习系列专栏大纲:深入探索与实践深度学习】
第一部分:深度学习基础篇 第1章:深度学习概览 1.1 深度学习的历史背景与发展轨迹 1.2 深度学习与机器学习、传统人工智能的区别与联系 1.3 深度学习的核心组件与概念解析 神经网络基础 激活函数的作用与类型 损失函数与优化算法的选择 1.4 深度学习框架简介与选择建议 第2…...
DDD聚合在 ASP.NET Core中的实现
目录 工作单元(UnitOfWork)的实现 聚合与聚合根的实现 实现 聚合与DbContext的关系 区分聚合根实体和其他实体 跨表查询 实现实体不要面向数据库建模 工作单元(UnitOfWork)的实现 EFCore的DbContext:跟踪对象状…...
数据治理双证通关经验分享 | CDGA/CDGP备考全指南
历经1个月多的系统准备,本人于2024年顺利通过DAMA China的CDGA(数据治理工程师)和CDGP(数据治理专家)双认证。现将备考经验与资源体系化整理,助力从业者高效通关。 🌟 认证价值与政策背景 根据…...
Aitken 逐次线性插值
Aitken 逐次线性插值 用 Lagrange 插值多项式 L n ( x ) L_n(x) Ln(x)计算函数近似值时,如需增加插值节点,那么原来算出的数据均不能利用,必须重新计算。为克服这个缺点,可用逐次线性插值方法求得高次插值。 令 I i 1 , i 2…...
亚信安全正式接入DeepSeek
亚信安全致力于“数据驱动、AI原生”战略,早在2024年5月,推出了“信立方”安全大模型、安全MaaS平台和一系列安全智能体,为网络安全运营、网络安全检测提供AI技术能力。自2024年12月DeepSeek-V3发布以来,亚信安全人工智能实验室利…...
unet学习(初学者 自用)
代码解读 | 极简代码遥感语义分割,结合GDAL从零实现,以U-Net和建筑物提取为例 以上面链接中的代码为例,逐行解释。 训练 unet的train.py如下: import torch.nn as nn import torch import gdal import numpy as np from torch…...
HTML之JavaScript运算符
HTML之JavaScript运算符 1.算术运算符 - * / %除以0,结果为Infinity取余数,如果除数为0,结果为NaN NAN:Not A Number2.复合赋值运算符 - * / %/ 除以0,结果为Infinity% 如果除数为0,结果为NaN NaN:No…...
CCFCSP第34次认证第一题——矩阵重塑(其一)
第34次认证第一题——矩阵重塑(其一) 官网链接 时间限制: 1.0 秒 空间限制: 512 MiB 相关文件: 题目目录(样例文件) 题目背景 矩阵(二维)的重塑(reshap…...
探索B-树系列
🌈前言🌈 本文将讲解B树系列,包含 B-树,B树,B*树,其中主要讲解B树底层原理,为什么用B树作为外查询的数据结构,以及B-树插入操作并用代码实现;介绍B树、B*树。 Ǵ…...
【Copilot】Redis SCAN SSCAN
目录 SCAN 命令SSCAN 命令使用示例原理Redis SCAN 和 SSCAN 命令的注意事项及风险注意事项风险 以下内容均由Github Copilot生成。 SCAN 和 SSCAN 命令是 Redis 提供的用于增量迭代遍历键或集合元素的命令。它们的主要优点是可以避免一次性返回大量数据,从而减少对 …...
GRN前沿:DeepMCL:通过深度多视图对比学习从单细胞基因表达数据推断基因调控网络
1.论文原名:Inferring gene regulatory networks from single-cell gene expression data via deep multi-view contrastive learning 2.发表日期:2023 摘要: 基因调控网络(GRNs)的构建对于理解细胞内复杂的调控机制…...
在软件产品从开发到上线过程中,不同阶段可能出现哪些问题,导致软件最终出现线上bug
在软件产品从开发到上线的全生命周期中,不同阶段都可能因流程漏洞、技术疏忽或人为因素导致线上问题。以下是各阶段常见问题及典型案例: 1. 需求分析与设计阶段 问题根源:业务逻辑不清晰或设计缺陷 典型问题: 需求文档模糊&#…...
Linux 内核架构入门:从基础概念到面试指南*
1. 引言 Linux 内核是现代操作系统的核心,负责管理硬件资源、提供系统调用、处理进程调度等功能。对于初学者来说,理解 Linux 内核的架构是深入操作系统开发的第一步。本篇博文将详细介绍 Linux 内核的架构体系,结合硬件、子系统及软件支持的…...
【竞技宝】PGL瓦拉几亚S4预选:Tidebound2-0轻取spiky
北京时间2月13日,DOTA2的PGL瓦拉几亚S4预选赛继续进行,昨日进行的中国区预选赛胜者组首轮Tidebound对阵的spiky比赛中,以下是本场比赛的详细战报。 第一局: 首局比赛,spiky在天辉方,Tidebound在夜魇方。阵容方面,spiky点出了幻刺、火枪、猛犸、小强、巫妖,Tidebound则是拿到飞…...
C#学习之DateTime 类
目录 一、DateTime 类的常用方法和属性的汇总表格 二、常用方法程序示例 1. 获取当前本地时间 2. 获取当前 UTC 时间 3. 格式化日期和时间 4. 获取特定部分的时间 5. 获取时间戳 6. 获取时区信息 三、总结 一、DateTime 类的常用方法和属性的汇总表格 在 C# 中&#x…...
EasyRTC智能硬件:小体积,大能量,开启音视频互动新体验
在万物互联的时代,智能硬件正以前所未有的速度融入我们的生活。然而,受限于硬件性能和网络环境,许多智能硬件在音视频互动体验上仍存在延迟高、卡顿、回声等问题,严重影响了用户的使用体验。 EasyRTC智能硬件,凭借其强…...
【ESP32指向鼠标】——icm20948与esp32通信
【ESP32指向鼠标】——icm20948与esp32通信 ICM-20948介绍 ICM-20948 是一款由 InvenSense(现为 TDK 的一部分)生产的 9 轴传感器集成电路。它结合了 陀螺仪、加速度计和磁力计。 内置了 DMP(Digital Motion Processor)即负责执…...
算法——结合实例了解深度优先搜索(DFS)
一,深度优先搜索(DFS)详解 DFS是什么? 深度优先搜索(Depth-First Search,DFS)是一种用于遍历或搜索树、图的算法。其核心思想是尽可能深地探索分支,直到无法继续时回溯到上一个节点…...
每日温度问题:如何高效解决?
给定一个整数数组 temperatures,表示每天的温度,要求返回一个数组 answer,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 问题分析 我们需要计算…...
华为FreeBuds Pro4和FreeBuds Pro3区别,相比上一代升级了什么
华为FreeBuds Pro 4于2024年11月26日在华为Mate品牌盛典上正式发布,是华为音频产品线中的旗舰级产品,12月亮相华为海外旗舰产品发布会。华为FreeBuds Pro 4耳机采用入耳式设计,可选曜石黑、雪域白、云杉绿三款配色。 FreeBuds Pro 4 FreeBud…...
读取本地excel并生成map,key为第一列,value为第二列
添加依赖:在 pom.xml 文件中添加以下依赖: <dependencies><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.3</version></dependency><dependency&…...
SpringMVC学习使用
一、SpringMVC简单理解 1.1 Spring与Web环境集成 1.1.1 ApplicationContext应用上下文获取方式 应用上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件) 方式获取的,但是每次从容器中获得Bean时都要编写new ClasspathXmlApplicationContext(sp…...
运维-自动访问系统并截图
需求背景 因项目甲方要求需要对系统进行巡检,由于系统服务器较多,并且已经采用PrometheusGrafana对系统服务器进行管理,如果要完成该任务,需要安排一个人力对各个系统和服务器进行一一截图等操作,费时费力,…...
UE_C++ —— Structs
目录 一,实现一个UStruct 二,Struct Specifiers 三,最佳做法与技巧 结构体(Struct)是一种帮助组织和操作相关属性的数据结构;在引擎中,结构体会被引擎反射系统识别为 UStruct,但不…...
Json-RPC项目框架(二)
目录 1. 项目实现; 1. 项目实现: 1.1 通信抽象实现: (1) BaseMessage: 主要实现对消息处理; 主要包含设置和获取ID, 设置类型和获取类型, 消息检查, 以及序列化和反序列化操作. class BaseMessage{public://大家需要的功能先实现;using ptr std::shared_ptr<BaseMessage…...
