EasyPOI导入遇到空白行问题

在使用easypoi过程中,如果excel的单元格被编辑之后,会导致在解析的时候,读出空数据。容易产生空白数据入库。

public JsonResult importExcel(@RequestParam("file") MultipartFile file) {
        try {
            ImportParams params = new ImportParams();
            // 表头设置为1行
            params.setHeadRows(1);
            //重点是这一行用于
            params.setVerifyHandler(verifyHandler);
            List<ClassVo> list = ExcelImportUtil.importExcel(file.getInputStream(), ClassVo.class, params);
            if (list != null && list.size() > 0) {
                boolean b = targetService.saveBatchByInport(ClwarningConvert.INSTANCE.targetToSource(list), list.size());
                return b ? success() : fail();
            }
        } catch (Exception e) {
            e.printStackTrace();
            return fail("导入数据格式不正确");
        }
        return success();
    }

主要是第五行代码:

params.setVerifyHandler(verifyHandler);

属性值是通过spring注入进来的;

 @Autowired
    private ClassExcelVerifyHandler verifyHandler;

verifyHandler属性值就是过滤器,具体代码如下:

@Component
 public class ClassExcelVerifyHandler implements IExcelVerifyHandler<ClassDTO>{
     @SneakyThrows
     @Override
     public ExcelVerifyHandlerResult verifyHandler(ClassDTO obj) {
         ExcelVerifyHandlerResult result=new ExcelVerifyHandlerResult(true);
         if (ObjectUtil.isNotNull(obj)){
            //判断对象属性是否全部为空
             boolean b = ObjectIsNullUitl.checkFieldAllNull(obj);
             result.setSuccess(!b);
         }
         return result;
     }
 }
//也可以把范型改成Object

导出代码就很简单了;

 public void exportExcel(HttpServletResponse response) throws IOException {
        List<ClassVo> list = targetService.select();
        response.setHeader("content-Type", "application/vnd.ms-excel");
        // 下载文件的默认名称
        String filename = "Excel模板" + ".xlsx";
        response.setHeader("Content-Disposition", "attachment;filename=" +
                URLEncoder.encode(filename, "UTF-8"));
        response.setCharacterEncoding("UTF-8");
        ExportParams exportParams = new ExportParams();
        exportParams.setSheetName("模板");
        exportParams.setType(ExcelType.XSSF);
        Workbook workbook = ExcelExportUtil.exportExcel(exportParams, ClassVo.class,
                ClwarningConvert.INSTANCE.sourceToTarget(list));
        workbook.write(response.getOutputStream());
    }

到这里就ok了以后有需要再继续补充;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,610评论 0 11
  • 彩排完,天已黑
    刘凯书法阅读 4,275评论 1 3
  • 没事就多看看书,因为腹有诗书气自华,读书万卷始通神。没事就多出去旅游,别因为没钱而找借口,因为只要你省吃俭用,来...
    向阳之心阅读 4,815评论 3 11
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 126,022评论 2 7