我使用下面的代码来读取非常大的excel文件多达50万行,最多100列。
public List<ExcelLine> getExcelLines(Path path, int batchSize) {
log.info("Reading excel file");
try (Workbook workbook = WorkbookFactory.create(path.toFile())) {
Sheet sheet = workbook.getSheetAt(0);
...
}
}
这个想法是批量读取,以避免OutOfMemory错误,它适用于小文件。然而,一旦我用大文件调用该方法,我看到log.info
语句,但随后应用程序陷入困境。因此try-with-resources语句中的断点不可达。
有人知道在这种情况下该怎么办吗?
1条答案
按热度按时间smdncfj31#
最流行的suggestion不适合我,因为它已经2年没有更新了,并且与最新的Apache POI实现有冲突。我找到了另一个repo,它本质上是原始repo的一个分支,但有更新:https://github.com/pjfanning/excel-streaming-reader。这是适合我的代码: