java如何解析excel
使用 Apache POI 解析 Excel
Apache POI 是 Java 中最常用的库之一,用于处理 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 文件示例:
import org.apache.poi.ss.usermodel.*;
import java.io.FileInputStream;
public class ExcelParser {
public static void main(String[] args) throws Exception {
FileInputStream file = new FileInputStream("example.xlsx");
Workbook workbook = WorkbookFactory.create(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");
break;
case NUMERIC:
System.out.print(cell.getNumericCellValue() + "\t");
break;
case BOOLEAN:
System.out.print(cell.getBooleanCellValue() + "\t");
break;
default:
System.out.print("-\t");
}
}
System.out.println();
}
workbook.close();
file.close();
}
}
使用 EasyExcel 解析 Excel
EasyExcel 是阿里开源的库,针对大数据量 Excel 解析做了优化,内存占用更低。
添加 Maven 依赖:

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.3.2</version>
</dependency>
定义数据模型:
public class DemoData {
@ExcelProperty("姓名")
private String name;
@ExcelProperty("年龄")
private Integer age;
// getters and setters
}
读取 Excel 文件:
EasyExcel.read("example.xlsx", 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();
使用 JExcelAPI 解析 Excel
JExcelAPI 是另一个轻量级的 Java Excel 解析库,但主要支持 .xls 格式。

添加 Maven 依赖:
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
</dependency>
解析示例:
import jxl.*;
import java.io.File;
public class JExcelParser {
public static void main(String[] args) throws Exception {
Workbook workbook = Workbook.getWorkbook(new File("example.xls"));
Sheet sheet = workbook.getSheet(0);
for (int row = 0; row < sheet.getRows(); row++) {
for (int col = 0; col < sheet.getColumns(); col++) {
Cell cell = sheet.getCell(col, row);
System.out.print(cell.getContents() + "\t");
}
System.out.println();
}
workbook.close();
}
}
性能与适用场景比较
Apache POI 功能最全面,支持新旧 Excel 格式,适合各种复杂场景。EasyExcel 在处理大文件时性能更优,内存占用更低。JExcelAPI 较老旧,仅适合处理 .xls 格式的简单需求。
对于大数据量 Excel 文件(超过10万行),推荐使用 EasyExcel 的流式读取模式。对于需要复杂格式处理的场景,Apache POI 更合适。






