读取本地excel删除第一行,并生成List数组

在 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 文件,删除首行,把其余行数据存入 List。

示例代码

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.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 文件路径。

相关推荐
Re.不晚6 小时前
JAVA进阶之路——无奖问答挑战3
java·开发语言
不倒翁玩偶7 小时前
IDEA导入新的SpringBoot项目没有启动按钮
java·spring boot·intellij-idea
静听山水7 小时前
Redis核心数据结构-ZSet
数据结构·redis
小小小米粒7 小时前
Maven Tools
java
铉铉这波能秀7 小时前
LeetCode Hot100数据结构背景知识之字典(Dictionary)Python2026新版
数据结构·python·算法·leetcode·字典·dictionary
骆驼爱记录7 小时前
Word样式检查器使用指南
自动化·word·excel·wps·新人首发
kali-Myon7 小时前
2025春秋杯网络安全联赛冬季赛-day1
java·sql·安全·web安全·ai·php·web
我是咸鱼不闲呀7 小时前
力扣Hot100系列20(Java)——[动态规划]总结(下)( 单词拆分,最大递增子序列,乘积最大子数组 ,分割等和子集,最长有效括号)
java·leetcode·动态规划
清水白石0087 小时前
深入解析 LRU 缓存:从 `@lru_cache` 到手动实现的完整指南
java·python·spring·缓存
Queenie_Charlie8 小时前
stars(树状数组)
数据结构·c++·树状数组