读取本地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 文件路径。

相关推荐
大阿明6 小时前
Spring Boot(快速上手)
java·spring boot·后端
bearpping6 小时前
Java进阶,时间与日期,包装类,正则表达式
java
邵奈一6 小时前
清明纪念·时光信笺——项目运行指南
java·实战·项目
sunwenjian8867 小时前
Java进阶——IO 流
java·开发语言·python
sinat_255487817 小时前
读者、作家 Java集合学习笔记
java·笔记·学习
皮皮林5517 小时前
如何画出一张优秀的架构图?(老鸟必备)
java
百锦再7 小时前
Java 并发编程进阶,从线程池、锁、AQS 到并发容器与性能调优全解析
java·开发语言·jvm·spring·kafka·tomcat·maven
森林猿7 小时前
java-modbus-读取-modbus4j
java·网络·python
tobias.b7 小时前
计算机基础知识-数据结构
java·数据结构·考研
reembarkation8 小时前
光标在a-select,鼠标已经移出,下拉框跟随页面滚动
java·数据库·sql