i\'m using library
org.apache.poi
XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream);
I\'m trying
org.xml.sax
InputStream is = new FileInputStream(new File("yourXLSX file path"));
Workbook workbook = StreamingReader.builder().rowCacheSize(100).bufferSize(4096).open(is))
for (Sheet sheet: workbook) {
//System.out.println(sheet.getSheetName());
for (Row r: sheet) {
for (Cell c: r) {
//System.out.println(c.getStringCellValue());
}
}
}
If the input data is too large for the available memory, you have two options.
a) Provide more memory via the -Xmx java command line option
b) Use the Streaming-API of POI.
Option a) will be easy to do if the files eventually fit in memory. If the file is too large for the available physical memory, you will need to take a look at the streaming options, especially the sample XLSX2CSV shows how you can read data from arbitrarily large .xlsx files, albeit with some features that need to access multiple cells not available out of the box.