栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

EasyPOI导入遇到空白行问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

EasyPOI导入遇到空白行问题

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

public JsonResult importExcel(@RequestParam("file") MultipartFile file) {
        try {
            importParams params = new importParams();
            // 表头设置为1行
            params.setHeadRows(1);
            //重点是这一行用于
            params.setVerifyHandler(verifyHandler);
            List 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{
	 @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 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了以后有需要再继续补充;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/351729.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号