pramod niralakeri
pramod niralakeri

Reputation: 65

Read large Excel file .xlsx

i'm using library

org.apache.poi 


XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream);

I'm trying

org.xml.sax

library, but cannot able convert it into workbook

NOTE : at end result i want XSSFWorkbook to be returned

the above code will go out of memory, any help will be appreciated ThankQ in advance

Upvotes: 0

Views: 11158

Answers (2)

Pushpender Singh
Pushpender Singh

Reputation: 72

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());
        }
    }
}

Upvotes: 1

centic
centic

Reputation: 15872

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.

Upvotes: 2

Related Questions