解析excel时会出现单元格为null的情况,这是因为excel编辑数据时该单元格没有被鼠标点击过,下面是关于单元格为null的处理方式。
第一种:if 判断
获取单元格时可能出现null,也有可能出现空字符串“”,所以我们需要对两种进行判断
//判断单元格是否为null和单元格类型是否为空
Cell dataCell = dataRow.getCell(j);
if(dataCell != null || dataCell .getCellType() != Cell.CELL_TYPE_BLANK){
}
第二种:获取单元格时,设置策略
row.getCell(cellIndex)
row.getCell(cellIndex, Row.CREATE_NULL_AS_BLANK)
//numberOfCells是最后一列数据的行号
for (int j = 0; j < numberOfCells; j++) {
Cell dataCell = dataRow.getCell(j, Row.CREATE_NULL_AS_BLANK);//单元格为null时默认为空
dataCell.setCellType(1);//设置单元格类型为String类型
//getCellFormatValue是自定义方法
String dataValue = ExcelUtils.getCellFormatValue(dataCell);//数据行单元格数据
}
三种策略
设置策略时:Row.MissingCellPolicy.CREATE_NULL_AS_BLANK和Row.CREATE_NULL_AS_BLANK
会根据版本有所不同。
当取到null,返回空字符串blank:
row.getCell(cellIndex, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK)
当取到null返回null,取到blank返回blank:
row.getCell(cellIndex, Row.MissingCellPolicy.RETURN_NULL_AND_BLANK)
当取到空字符串blank,返回null:
row.getCell(cellIndex, Row.MissingCellPolicy.RETURN_BLANK_AS_NULL)
版权声明:本文为ybsgsg原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。