/*** 读取转换异常

**/

public class DemoExceptionListener extends AnalysisEventListener{private static final Logger LOGGER = LoggerFactory.getLogger(DemoExceptionListener.class);/*** 每隔5条存储数据库,实际使用中可以3000条,然后清理list ,方便内存回收*/

private static final int BATCH_COUNT = 5;

List list = new ArrayList();//定义接收异常

private StringBuffer errorMsg;/*** 在转换异常 获取其他异常下会调用本接口。抛出异常则停止读取。如果这里不抛出异常则 继续读取下一行。

*

*@paramexception

*@paramcontext

*@throwsException*/@Overridepublic voidonException(Exception exception, AnalysisContext context) {

LOGGER.error("解析失败,但是继续解析下一行:{}", exception.getMessage());//如果是某一个单元格的转换异常 能获取到具体行号//如果要获取头的信息 配合invokeHeadMap使用

if (exception instanceofExcelDataConvertException) {

ExcelDataConvertException excelDataConvertException=(ExcelDataConvertException)exception;

LOGGER.error("第{}行,第{}列解析异常,数据为:{}", excelDataConvertException.getRowIndex(),

excelDataConvertException.getColumnIndex(), excelDataConvertException.getCellData());

String msg="第"+excelDataConvertException.getRowIndex()+"行,第"+excelDataConvertException.getColumnIndex()+"列解析异常,数据为:"+

excelDataConvertException.getCellData();

if(errorMsg==null){

errorMsg=new StringBuffer();

}

//拼接报错信息errorMsg.append(msg).append(System.lineSeparator());

}

}/*** 这里会一行行的返回头

*

*@paramheadMap

*@paramcontext*/@Overridepublic void invokeHeadMap(MapheadMap, AnalysisContext context) {

LOGGER.info("解析到一条头数据:{}", JSON.toJSONString(headMap));

}

@Overridepublic voidinvoke(ExceptionDemoData data, AnalysisContext context) {

LOGGER.info("解析到一条数据:{}", JSON.toJSONString(data));if (list.size() >=BATCH_COUNT) {//操作数据之前统一判断异常信息,可以直接抛异常

if (errorMsg != null && errorMsg.length() > 0) {

// throw new RuntimeException("解析数据异常!!信息:"+errorMsg.toString());

LOGGER.error("解析数据异常!!信息:" +errorMsg.toString());

}

saveData();

list.clear();

}

}

@Overridepublic voiddoAfterAllAnalysed(AnalysisContext context) {操作数据之前统一判断异常信息

/*if (errorMsg != null && errorMsg.length() > 0) {

// throw new RuntimeException("解析数据异常!!信息:"+errorMsg.toString());

LOGGER.error("解析数据异常!!信息:" + errorMsg.toString());

}else{

LOGGER.info("所有数据解析完成!");

//解析完成无错误保存数据

saveData();

}*/}/*** 加上存储数据库*/

private voidsaveData() {

LOGGER.info("{}条数据,开始存储数据库!", list.size());

LOGGER.info("存储数据库成功!");

}

}

easyexcel 导入指定_阿里巴巴EasyExcel使用(3)-导入相关推荐

  1. java 导入 证书_如何把安全证书导入到java中的cacerts证书库

    在项目开发中,有时会遇到与SSL安全证书导入打交道的,如何把证书导入java中的cacerts证书库呢? 其实很简单,方法如下: 每一步:进入某个https://www.xxx.com开头的网站,把要 ...

  2. easyexcel工具类_阿里巴巴程序员常用的 15 款开发者工具

    从人工到自动化,从重复到创新,技术演进的历程中,伴随着开发者工具类产品的发展. 阿里巴巴将自身在各类业务场景下的技术积淀,通过开源.云上实现或工具等形式对外开放,本文将精选了一些阿里巴巴的开发者工具, ...

  3. easyexcel 设置标题_使用easyexcel完成复杂表头及标题的导出功能(自定义样式)

    如需客户端指定excel版本,只需要判断后缀名然后在controller中的.excelType(ExcelTypeEnum.XLS)做指定输出内容格式即可 ***(注意表格行高列宽统一设置是在实体类 ...

  4. easyexcel 默认表头_使用easyexcel导出多表头excel文件

    多表头的model package com.souche.financial.report.model.eo; import com.alibaba.excel.annotation.ExcelPro ...

  5. impdp导入指定表 oracle_Oracle expdp/impdp导出导入命令及数据库备份(转)

    使用EXPDP和IMPDP时应该注意的事项: EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用, ...

  6. impdp导入指定表 oracle_oracle 11g 将表导入到其他用户的impdp命令

    /*分为四步 */ /*第1步:创建临时表空间  */ create temporary tablespace yuhang_temp tempfile 'D:\oracledata\yuhang_t ...

  7. python模块如何导入解释器_无法从嵌入式解释器导入内置模块(仅限Windows)

    这个问题看起来可能是一个重复的问题 但我认为我的问题是不同的.我正在从一个MSVC编译的C++应用程序运行Python 3.4解释器,并且我尝试使用PTVSD模块来调试更容易.到目前为止,我已经能够连 ...

  8. 我的世界Java存档转移_我的世界怎么导入本地地图_我的世界中国版怎么导入地图_我的世界怎么导入存档...

    为了让这些与<我的世界>一同成长的国内玩家.更加方便地在中国版游戏中继续此前的"世界",<我的世界>中国版在PC Java版不删档测试中推出了贴心的&quo ...

  9. 新点软件怎么导入清单_表格软件excel怎样导入数据 | 新点软件怎么导入excel清单表格 表格有什么要求???...

    新点软件怎么导入excel清单表格 表格有什么要求??? 没有特别的要求. 导入EXCEL实要引入POI包,这是专门操excel的 poi 提供的只是对应的excel操作方法,要完成一个任务,自己想办 ...

最新文章

  1. Robocopy是微软Windows Server 2003资源工具包中众多多用途的实用程序之一(它是基于强大的拷贝程序...
  2. windows上安装gcc/g++环境(MinGW,msys64等)
  3. linux—用nc命令监控检测服务器端口
  4. SAP Fiori 应用里图标(Icon)的渲染原理和使用技巧
  5. listview嵌套gridview
  6. char 与 String 相等比较
  7. 关掉内核线程linux,c – 如何在rmmod上停止Linux内核线程?
  8. kali linux 桌面消失_Kali Linux添加桌面快捷方式
  9. silverlight 3 blend3最新版本 破解方法
  10. [SQl读书笔记]§6.Transact-SQL(4)
  11. 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第1节 基本概念_01maven概述
  12. Java基础案例教程pdf,圆我大厂梦!
  13. 综述-自动驾驶中基于图像的3D目标检测
  14. python常用标准库
  15. java web程序课后答案_JavaWeb程序设计教程课后练习答案【参考】.doc
  16. slack 聊天机器人_无法筹集资金的Slack机器人
  17. Asp.net学习资料
  18. OneNote2016电脑端修改笔记本名称网页端不同步解决办法
  19. Android音频焦点及混音策略
  20. 电脑计算机管理看AHCI,怎么将电脑硬盘模式修改为ahci模式?

热门文章

  1. Waymo真·无人车上路了!没司机的出租车推出在即 | 多图实拍
  2. Cocos2d-X开发中国象棋《三》開始场景的实现
  3. Linux系统下如何实现文件系统配额
  4. ORA-12504:TNS:监听程序在CONNECT_DATA中未获得SERVICE_NAME
  5. WindowsXP下搭建GIT服务器
  6. 深入理解typedef
  7. terminateActivity
  8. 微信测试公众号-jssdk基本配置和使用-thinkphp
  9. 低微漏洞处理办法记录
  10. 6.4. Pirum is a simple PEAR Channel Server Manager