【发布时间】:2018-12-01 17:56:35
【问题描述】:
我可以使用 Apache POI 仅读取 Excel 文件的第一行吗? 我不想读取整个文件,因为它有 50,000 行并且需要长达 10 分钟才能读取(性能是一场灾难)。我通过文件上传获取字节。我的选择是字节数组或 InputStream。现在我正在这样做:
Workbook workbook = new XSSFWorkbook(excelByteStream); //This line takes a lot of time, while debugging up to 10 minutes
Sheet firstSheet = workbook.getSheetAt(0);
DataFormatter df = new DataFormatter();
List<ColumnPanel> columnPanels = new ArrayList<>();
int i = 0;
for (Cell cell : firstSheet.getRow(0))
{
columnPanels.add(new ColumnPanel(df.formatCellValue(cell), i++));
}
【问题讨论】:
-
将SXSSFWorkbook与构造函数
new SXSSFWorkbook(workbook, 1)一起使用 -
stackoverflow.com/questions/11891851/…:看看monitorjbl的回答。我认为它可以为此提供完美的解决方案。
-
不要从流中读取,而是加载文件。如果流来自外部,如果需要,请先将流写入文件。见stackoverflow.com/questions/11154678/…
-
@XtremeBaumer SXSSF 仅用于写入,不支持读取。
-
Excel Streaming Reader 已被建议。但是如果你不想要额外的库,你可以尝试使用
StAX,如下所示stackoverflow.com/questions/46601782/…。
标签: java excel performance apache-poi