【问题标题】:Apache POI only read the first row of a large Excel fileApache POI 仅读取大型 Excel 文件的第一行
【发布时间】: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++));
}

【问题讨论】:

标签: java excel performance apache-poi


【解决方案1】:

InputStream is = new FileInputStream(new File("/path/to/workbook.xlsx"));

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

工作表 = workBook.getSheetAt(0);

Row firstRow = sheet.rowIterator().next();

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-23
相关资源
最近更新 更多