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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache POI只读取大型Excel文件的第一行相关的知识,希望对你有一定的参考价值。

我可以只使用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++));
}
答案

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

以上是关于Apache POI只读取大型Excel文件的第一行的主要内容,如果未能解决你的问题,请参考以下文章

springboot结合POI导入导出excel文件

java通过apache poi框架读取2007版Excel文件

使用Apache下poi创建和读取excel文件

使用Apache POI 读取Excel文件

java用poi读取excel文件时怎么获取每个单元格的列宽?

java 写excel 文件的问题,写完后 就把原来的内容清除了