- 问题:POI识别空白格时,有时识别为null,有时识别为空字符串,导致获取列数不准确
- 报错形式:空指针异常
- 原因:
①表格为空白格时,若此空白格一直未被编辑,会被POI判定为null,列数不会增加
②表格为空白格时,若此空白格是被编辑后又被清空的,会被POI判定为空字符串,列数会增加 - 解决方法:可以根据自己模板格式,固定一个列数,传递到工具类
工具类修改前代码
//获得当前行的开始列
int firstCellNum = row.getFirstCellNum();
//获得当前行的列数
int lastCellNum = row.getPhysicalNumberOfCells();
String[] cells = new String[row.getPhysicalNumberOfCells()];
//循环当前行
for(int cellNum = firstCellNum; cellNum < lastCellNum;cellNum++){
Cell cell = row.getCell(cellNum);
cells[cellNum] = getCellValue(cell);
}
工具类修改后代码(注意下面修改了两个地方,num的位置!!!)
//获得当前行的开始列
int firstCellNum = row.getFirstCellNum();
//可以将此处的数组长度用一个变量代替,之后根据自己excel模板传递一个固定列数值就可以
String[] cells = new String[num];
//循环当前列
for(int cellNum = firstCellNum; cellNum < num;cellNum++){
//根据列号获取列
Cell cell = row.getCell(cellNum);
String cellValue = getCellValue(cell);
cells[cellNum]=cellValue;
}
ps:只是个人建议处理方式,有更好的解决方法,欢迎评论区留言!