1例外处理代码
只需用侦听器重写onException方法即可。 //*
*转换异常获取其他异常调用本接口。 抛出异常时停止读取。 如果不在此抛出异常,则继续读取下一行。
*
* @param exception
* @ param上下文
* @throws Exception
*/
@Override
publicvoidonexception (执行执行,分析上下文上下文) {
LOGGER.error ('分析失败,但以下行中的:{}、exception.getMessage ) );
//如果是某个单元的转换异常,则得到具体的行号
//想要获取头部信息,与invokeHeadMap配合使用
扩展防毒墙群件版数据转换器(if ) {
exceldataconvertexceptionexceldataconvertexception=(exceldataconvertexception ) exception;
LOGGER.error (第行、第列分析异常)、exceldataconvertexception.get rowindex )、
exceldataconvertexception.getcolumn index (
}
}
监听程序的完整代码://有一个重点。 DemoExceptionListener无法通过spring管理。 每次导入excel时,都可以请求new,然后在中使用spring构建并传递方法
publicclassdemoexceptionlistenerextendsanalysiseventlistener {
privatestaticfinalloggerlogger=logger factory.getlogger (demodatalistener.class;
//*
*每隔五个数据库存储一次,实际使用3000个,然后清理list,以便于内存回收
*/
私密性staticfinalintbatch _ count=5;
列表列表=new ArrayList (;
//*
*假设这是刁钻。 当然有商业逻辑。 这个也可以服务。 当然,如果不保存这个对象就没用了。
*/
私密演示道演示道;
公共调制解调器
//这里是demo,所以随便一个新闻。 实际使用spring后,请使用以下带参数的构造函数
demoDAO=new DemoDAO (;
}
//*
如果使用spring,请使用此生成方法。 每次创建监听器时,都必须传递spring管理的类
*
* @param demoDAO
*/
公共调制解调器(调制解调器) {
this.demoDAO=demoDAO;
}
//*
*转换异常获取其他异常调用本接口。 抛出异常时停止读取。 如果不在此抛出异常,则继续读取下一行。
*
* @param exception
* @ param上下文
* @throws Exception
*/
@Override
publicvoidonexception (执行执行,分析上下文上下文) {
LOGGER.error ('分析失败,但以下行中的:{}、exception.getMessage ) );
//如果是某个单元的转换异常,则得到具体的行号
//想要获取头部信息,与invokeHeadMap配合使用
扩展防毒墙群件版数据转换器(if ) {
exceldataconvertexceptionexceldataconvertexception=(exceldataconvertexception ) exception;
LOGGER.error (第行、第列分析异常)、exceldataconvertexception.get rowindex )、
exceldataconvertexception.getcolumn index (
}
}
//*
*调用此所有数据分析
*
* @param data
* onerowvalue.isissameas { @ linkanalysiscontext # readrowholder (}
* @ param上下文
*/
@Override
公共语音邀请(demodatadata,analysis上下文) {
解析为logger.info(1个数据:{} )、JSON.tojsonstring(data );
达到BATCH_COUNT后,需要保存一次数据库,使数万条数据不在内存中,容易进行OOM
if(list.size(=batch_count ) ) )
保存数据(;
//已完成存储清理的列表
list.clear (;
}
}
2实体对象@Data
公共类执行演示数据{
//*
*毫无疑问,按日期接收字符串
*/
私人日期;
}
3测试代码执行/**
*数据转换等异常处理
*
*
*1.创建与excel对应的实体对象引用{@link ExceptionDemoData}
*
* 2.默认情况下异步读取excel,因此必须为引用{@link DemoExceptionListener}的excel创建一行一行的回调侦听器
*
* 3.直接读就行了
*/
@Test
公共语音执行读取(
string filename=test file util.getpath (' demo ' file.separator ' demo.xlsx ';
//这里需要指定用哪个class读取,读取第一个sheet
easyexcel.read(filename,ExceptionDemoData.class,new DemoExceptionListener ().sheet ) ).doRead );
}
相关文档: