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