java如何读取excel文件
读取Excel文件的常用方法
在Java中读取Excel文件可以通过多种库实现,以下是两种主流方案:
使用Apache POI库
Apache POI是Apache基金会提供的开源库,支持读写Microsoft Office格式文件(包括Excel)。
添加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 ExcelReader {
public static void readExcel(String filePath) throws Exception {
Workbook workbook = WorkbookFactory.create(new FileInputStream(filePath));
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();
}
}
使用EasyExcel库
EasyExcel是阿里开源的Excel处理工具,内存消耗更低,适合大数据量处理。

添加Maven依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.3.2</version>
</dependency>
读取示例代码:
import com.alibaba.excel.EasyExcel;
import java.util.ArrayList;
import java.util.List;
public class ExcelReader {
public static void main(String[] args) {
String fileName = "example.xlsx";
// 创建监听器
ExcelListener listener = new ExcelListener();
// 读取文件
EasyExcel.read(fileName, DemoData.class, listener).sheet().doRead();
// 获取解析后的数据
List<DemoData> dataList = listener.getDataList();
}
}
// 数据模型类
class DemoData {
private String name;
private Double value;
// getters/setters
}
// 自定义监听器
class ExcelListener extends AnalysisEventListener<DemoData> {
private List<DemoData> dataList = new ArrayList<>();
@Override
public void invoke(DemoData data, AnalysisContext context) {
dataList.add(data);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
System.out.println("解析完成");
}
public List<DemoData> getDataList() {
return dataList;
}
}
性能优化建议
对于大数据量Excel文件(超过10万行):
- 使用POI的流式API(XSSF and SAX)
- 优先考虑EasyExcel等内存优化方案
- 分批次处理数据,避免一次性加载全部内容
格式处理注意事项
- 日期类型单元格需要使用DateUtil处理
- 公式单元格需要先评估再获取值
- 合并单元格需要特殊处理边界情况






