Reading data from xlsx with Apache POI's SXSSFSheet

Ozan picture Ozan · Sep 20, 2012 · Viewed 16.6k times · Source

I want to read data ( cell values ) from a certain xlsx file using apachi poi. The code below creates the SXSSFWorkBook instance successfully and assigns db.xlsx ( my dummy xlsx). I have tried changing sheet numbers and double checking it with the getSheetNumber method to make sure the workbook is correctly assigned.

Next I want to assign a specific sheet (index 0 with name main) to SXSSFSheet instance, but currently it returns null. (I have both tried getSheetAt and getSheet methods).

SXSSFRow DummyRow;
SXSSFCell DummyCell;

int RowCount;
OPCPackage pkg = OPCPackage.open(blabla string adress);

XSSFWorkbook wb = new XSSFWorkbook(pkg);
Workbook MainBook = new SXSSFWorkbook(wb,100);

int a = MainBook.getNumberOfSheets();

SXSSFSheet MainSheet = (SXSSFSheet) MainBook.getSheetAt(0); 
RowCount = MainSheet.getLastRowNum();

What am I doing wrong?

Edit:

I have tried getSheetName method and had a positive result. So the problem is with reaching rows in Worksheet. so, the last line getLastRowNum() is not working.

Answer

Gagravarr picture Gagravarr · Sep 20, 2012

You can't. SXSSFWorkBook is write only, it doesn't support reading

For low memory reading of .xlsx files, you should look at the XSSF and SAX EventModel documentation