XSSFWorkbook wb = new XSSFWorkbook(fs);
this.workBook = new SXSSFWorkbook(wb, 1000);
这种方式创建的Workbook,使用sheet.getRow(0)获取的row为null;
原因是new SXSSFWorkbook(new XSSFWorkbook(inputStream))的时候,SXSSFWorkbook对象内部会维护一个HashMap(反编译后的名称为_xFromSxHash);
当使用workBok.getSheetAt(0)的时候,其实是从_xFromSxHash中获取新创建的Sheet对象;从而导致sheet.getRow(0)获取的row为null。
Sheet sheet = this.workBook.getSheetAt(0);
Row row = sheet.getRow(0);
改为如下取值方式:
SXSSFWorkbook sxssfWorkbook = (SXSSFWorkbook) this.workBook;
Sheet sheet = sxssfWorkbook.getXSSFWorkbook().getSheetAt( 0 );
Row row = sheet.getRow(0);