Apache POI只读取大型Excel文件的第一行

问题描述 投票:0回答:1

我可以只使用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++));
}
java excel performance apache-poi
1个回答
0
投票

InputStream = new FileInputStream(new File(“/ path / to / workbook.xlsx”));

工作簿工作簿= StreamingReader.builder()。redCacheSize(100).bufferSize(4096).open(is);

Sheet sheet = workBook.getSheetAt(0);

行firstRow = sheet.rowIterator()。next();

你可以使用这个lib:https://github.com/monitorjbl/excel-streaming-reader

好指南:Apache POI Streaming (SXSSF) for Reading

© www.soinside.com 2019 - 2024. All rights reserved.