new SXSSFWorkbook(new XSSFWorkbook(inputStream));
这种方式创建的Workbook,使用sheet.getRow(0)获取的row为null;
原因是new SXSSFWorkbook(new XSSFWorkbook(inputStream))的时候,SXSSFWorkbook对象内部会维护一个HashMap(反编译后的名称为_xFromSxHash);
当使用workBok.getSheetAt(0)的时候,其实是从_xFromSxHash中获取新创建的Sheet对象;从而导致sheet.getRow(0)获取的row为null。
Workbook workBook = new SXSSFWorkbook(new XSSFWorkbook(inputStream));
Sheet sheet = workBook.getSheetAt(0);
Row row = sheet.getRow(0);
改为如下取值即可:
Workbook workBook = new SXSSFWorkbook(new XSSFWorkbook(inputStream));
Sheet sheet;
if (workBook instanceof SXSSFWorkbook) {
SXSSFWorkbook sxssfWorkbook = (SXSSFWorkbook) workBook;
sheet = sxssfWorkbook.getXSSFWorkbook().getSheetAt(sheetIndex);
} else {
sheet = workBook.getSheetAt(sheetIndex);
}
Row row = sheet.getRow(0);
版权声明:本文为weixin_42600999原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。