Java 读取xlsx
Posted Milton
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 读取xlsx相关的知识,希望对你有一定的参考价值。
读取特别大的xlsx文件时, 需要使用StreamingReader, 可以控制JVM内存峰值在200M以内
InputStream is = new FileInputStream(new File(filePath)); StreamingReader reader = StreamingReader.builder() .rowCacheSize(10) // number of rows to keep in memory (defaults to 10) .bufferSize(1024) // buffer size to use when reading InputStream to file (defaults to 1024) .sheetIndex(0) // index of sheet to use (defaults to 0) .read(is); // InputStream or File for XLSX file (required) for (Row r : reader) { for (Cell cell : r) { switch (cell.getCellType()) { case Cell.CELL_TYPE_NUMERIC: System.out.print("D" + cell.getNumericCellValue() + "\t"); break; case Cell.CELL_TYPE_STRING: System.out.print("S" + cell.getStringCellValue() + "\t"); break; case Cell.CELL_TYPE_BOOLEAN: System.out.print("B" + (cell.getBooleanCellValue() + "\t")); break; } } System.out.print("\n"); }
https://github.com/monitorjbl/excel-streaming-reader
相比较官方的方案
File file = new File("C:\\D\\Data Book.xlsx"); OPCPackage opcPackage = OPCPackage.open(file); XSSFWorkbook workbook = new XSSFWorkbook(opcPackage);
官方的方案内存占用明显较高.
以上是关于Java 读取xlsx的主要内容,如果未能解决你的问题,请参考以下文章
java读取txt/pdf/xls/xlsx/doc/docx/ppt/pptx