java如何读取excel
读取 Excel 文件的常用方法
在 Java 中读取 Excel 文件通常使用第三方库,以下是两种主流方法:
使用 Apache POI 库
Apache POI 是处理 Microsoft Office 文件(包括 Excel)的流行库。支持 .xls(HSSF)和 .xlsx(XSSF)格式。
添加 Maven 依赖:

<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>
读取 .xlsx 文件示例:
try (FileInputStream file = new FileInputStream("data.xlsx");
Workbook workbook = new XSSFWorkbook(file)) {
Sheet sheet = workbook.getSheetAt(0);
for (Row row : sheet) {
for (Cell cell : row) {
switch (cell.getCellType()) {
case STRING -> System.out.print(cell.getStringCellValue() + "\t");
case NUMERIC -> System.out.print(cell.getNumericCellValue() + "\t");
case BOOLEAN -> System.out.print(cell.getBooleanCellValue() + "\t");
default -> System.out.print("\t");
}
}
System.out.println();
}
}
使用 EasyExcel 库
EasyExcel 是阿里开源的 Excel 处理工具,适合大数据量场景,内存占用低。

添加 Maven 依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.3.2</version>
</dependency>
定义数据模型:
@Data
public class DemoData {
@ExcelProperty("姓名")
private String name;
@ExcelProperty("年龄")
private Integer age;
}
读取文件示例:
String fileName = "data.xlsx";
EasyExcel.read(fileName, DemoData.class, new AnalysisEventListener<DemoData>() {
@Override
public void invoke(DemoData data, AnalysisContext context) {
System.out.println(data);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
System.out.println("读取完成");
}
}).sheet().doRead();
选择建议
- 需要完整控制 Excel 各个元素时选择 Apache POI
- 处理大数据量或简单结构数据时选择 EasyExcel
- 考虑文件格式:
.xls只能用 HSSF(POI),.xlsx两种库都支持
两种方式都能有效读取 Excel 内容,根据项目需求选择合适的工具即可。






