java如何读取excel数据
读取Excel数据的常用方法
在Java中读取Excel数据可以通过多种库实现,以下是两种主流方式:
使用Apache POI库
Apache POI是处理Microsoft Office文件(包括Excel)的常用Java库。需添加以下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文件的示例代码:
FileInputStream file = new FileInputStream("data.xlsx");
XSSFWorkbook workbook = new XSSFWorkbook(file);
XSSFSheet sheet = workbook.getSheetAt(0);
Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
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("UNKNOWN\t");
}
}
System.out.println();
}
workbook.close();
file.close();
使用EasyExcel库
EasyExcel是阿里巴巴开发的Excel处理工具,适合大数据量场景,内存占用更低。添加Maven依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.3.2</version>
</dependency>
实现数据读取的监听器:
public class ExcelDataListener extends AnalysisEventListener<Map<Integer, String>> {
@Override
public void invoke(Map<Integer, String> data, AnalysisContext context) {
System.out.println("解析到一条数据:" + data);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
System.out.println("所有数据解析完成");
}
}
调用读取方法:
EasyExcel.read("data.xlsx", new ExcelDataListener()).sheet().doRead();
性能优化建议
对于大文件(超过10万行),推荐使用:
- POI的
SXSSFWorkbook流式API - EasyExcel的异步读取模式
- 设置JVM参数
-Xmx1024m增加内存分配
异常处理
需处理以下常见异常:
IOException:文件不存在或损坏IllegalStateException:单元格类型不匹配EncryptedDocumentException:加密文件无法读取







