具体报错信息 : java.lang.IllegalArgumentException: Cell index must be >= 0
报错代码 :
public static boolean isEmptyRow(Row row, int colsNum) { boolean isEmptyRow = true; for (int cellNum = row.getFirstCellNum(); cellNum < colsNum; cellNum++) { Cell cell = row.getCell(cellNum); if (cell != null && cell.getCellTypeEnum() != CellType.BLANK && StringUtils.isNotBlank(cell.toString())) { isEmptyRow = false; } } return isEmptyRow; }
直接上结论 : POI解析到有数据的是多少行 然后row.getFirstCellNum() 具体获取数据 cell 的时候后找不到数据 会返回 -1
解决方案 : 代码层面加上 if row.getFirstCellNum() < 0 就不获取cell
暴力解决方案 :让睿智运营人员别搞这种奇奇怪怪的表格过来 报错的execl是因为结构被破坏 之前被用过 数据删除不当 让Apache POI 以为有值 直接复制出来有数据的行列 到一个新的表格就好了
我打印了具体的报错行数 发现那一行并没有数据