【Excel导入】- EasyExcel读取Excel空数据行问题

EasyExcel读取Excel空数据行问题

  • 原因
  • 解决
  • 写在最后

原因

项目Excel导入使用的EasyExcel工具,为什么会出现空白行的问题呢;在进行Excel导入时都会提前设定一个Excel模版,Excel导入时在Excel模版中设置了单元的样式,但没有给单元格设值。在读取数据时没有判断这一步,所以会出现直接读取到整行数据均为null的情况;

解决

自定义监听器

/*
 * 模版读取
 */
@Slf4j
public class DemoReadListener<T> extends AnalysisEventListener<T> {
	 /*
 	  * 每一条数据解析都会来调用
      */
    @Override
    public void invoke(T data, AnalysisContext context) {
        //设置忽略空白行参数,ignoreEmptyRow默认true-忽略空的行,
        //此处设置为false,不忽略,然后根据读取到数据做校验
        analysisContext.readworkbookHolder().setIgnoreEmptyRow(false);
		if (CellDatalypeEnum.EMPTY.name().equals(analysisContext.readSheetHolder().getTempCellData().getType().name())){
			return;
		} else {
			//数据处理,数据值是否为空,也可以放在此处校验
		}
    }
 
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
       //所有数据解析完成了调用
    }
 }

重启项目,导入原来有问题的Excel表格吧,数据读取是没问题的,也不会有空白行的问题了,如果是要校验一条数据字段是否为空,也是放在invoke中做校验的;

写在最后

可以在实体中绑定Excel模版定义的表头,如果发现导入某些字段为空,也可能是这个问题导致的;

//value值与Excel导入模版中定义保持一致
@ExcelProperty("名称")
private String name;

你可能感兴趣的:(工具,excel,EasyExcel,java)