当前位置:首页 > Java技术 > easyexcel 异常处理

easyexcel 异常处理

2022年09月16日 20:17:51Java技术6

easyexcel 异常处理

 

 

**********************

相关类与接口

 

AnalysisEventListener:异常在监听接口中处理

public abstract class AnalysisEventListener<T> implements ReadListener<T> {
    public AnalysisEventListener() {
    }

    public void invokeHead(Map<Integer, CellData> headMap, AnalysisContext context) {
        this.invokeHeadMap(ConverterUtils.convertToStringMap(headMap, context), context);
    }

    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
    }

    public void extra(CellExtra extra, AnalysisContext context) {
    }

    public void onException(Exception exception, AnalysisContext context) throws Exception {
        throw exception;
    }  //默认抛出异常

    public boolean hasNext(AnalysisContext context) {
        return true;
    }
}

 

ReadListener

public interface ReadListener<T> extends Listener {

    void invoke(T var1, AnalysisContext var2);
    void invokeHead(Map<Integer, CellData> var1, AnalysisContext var2);

    void doAfterAllAnalysed(AnalysisContext var1);

    void onException(Exception var1, AnalysisContext var2) throws Exception;  //异常处理

    void extra(CellExtra var1, AnalysisContext var2);
    boolean hasNext(AnalysisContext var1);
}

 

Listener

public interface Listener {
}

 

 

ExcelDataConvertException:数据转换异常错误

public class ExcelDataConvertException extends RuntimeException {

    private Integer rowIndex;
    private Integer columnIndex;

    private CellData cellData;
    private ExcelContentProperty excelContentProperty;

    public ExcelDataConvertException(Integer rowIndex, Integer columnIndex, CellData cellData,
    public ExcelDataConvertException(Integer rowIndex, Integer columnIndex, CellData cellData,


    public void setRowIndex(Integer rowIndex) {
    public void setColumnIndex(Integer columnIndex) {
    public void setCellData(CellData cellData) {
    public void setExcelContentProperty(ExcelContentProperty excelContentProperty) {

    public Integer getRowIndex() {
    public Integer getColumnIndex() {
    public CellData getCellData() {
    public ExcelContentProperty getExcelContentProperty() {

 

ExcelAnalysisStopException:onexception中抛出该异常后停止解析

public class ExcelAnalysisStopException extends ExcelAnalysisException {

    public ExcelAnalysisStopException() {}

    public ExcelAnalysisStopException(String message) {
        super(message);
    }

    public ExcelAnalysisStopException(String message, Throwable cause) {
        super(message, cause);
    }

    public ExcelAnalysisStopException(Throwable cause) {
        super(cause);
    }
}

 

 

**********************

示例

 

**************

head 类

 

Order

@Data
public class Order {

    private Integer id;

    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
    //@ExcelProperty(converter = CustomConverter.class)
    private LocalDateTime createTime;

    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
    //@ExcelProperty(converter = CustomConverter.class)
    private LocalDateTime payTime;

    @NumberFormat("##.00")
    private Double totalFee;
}

 

**************

监听器

 

CustomListener

public class CustomListener extends AnalysisEventListener<Order> {

    private final Logger logger= LoggerFactory.getLogger(CustomListener3.class.getName());

    @Override
    public void invoke(Order order, AnalysisContext context) {
        System.out.println(order);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        System.out.println("数据解析完成");
    }

    @Override
    public void onException(Exception exception, AnalysisContext context) throws Exception {
        logger.info("解析出错:"+exception.getMessage());

        int row=0,column=0;
        if (exception instanceof ExcelDataConvertException){
            ExcelDataConvertException convertException=(ExcelDataConvertException) exception;

            row=convertException.getRowIndex();
            column=convertException.getColumnIndex();
            logger.error("解析出错:{}行 {}列",row,column);
        }
    }
}

 

**************

测试类

 

Test

public class Test {

    private static final String file_path="e:"+ File.separator+"java"+File.separator+"easyexcel"+File.separator+"write_test6.xlsx";

    public static void main(String[] args){
        EasyExcel.read(file_path, Order.class,new CustomListener3()).sheet().doRead();
    }
}

 

 

**********************

使用测试

 

测试数据

                easyexcel 异常处理 _ JavaClub全栈架构师技术笔记

 

控制台输出

10:32:44.226 [main] INFO com.example.demo.listener.CustomListener3 - 解析出错:Converter not found, convert STRING to java.time.LocalDateTime
10:32:44.226 [main] ERROR com.example.demo.listener.CustomListener3 - 解析出错:1行 1列
10:32:44.227 [main] INFO com.example.demo.listener.CustomListener3 - 解析出错:Converter not found, convert STRING to java.time.LocalDateTime
10:32:44.227 [main] ERROR com.example.demo.listener.CustomListener3 - 解析出错:2行 1列
数据解析完成

发生异常后,默认会继续解析后续数据

 

 

**********************

解析出现异常就停止

 

CustomListener

public class CustomListener3 extends AnalysisEventListener<Order> {

    private final Logger logger= LoggerFactory.getLogger(CustomListener3.class.getName());

    @Override
    public void invoke(Order order, AnalysisContext context) {
        System.out.println(order);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        System.out.println("数据解析完成");
    }

    @Override
    public void onException(Exception exception, AnalysisContext context) throws Exception {
        logger.info("解析出错:"+exception.getMessage());

        int row=0,column=0;
        if (exception instanceof ExcelDataConvertException){
            ExcelDataConvertException convertException=(ExcelDataConvertException) exception;

            row=convertException.getRowIndex();
            column=convertException.getColumnIndex();
            logger.error("解析出错:{}行 {}列",row,column);
        }

        throw new ExcelAnalysisStopException("解析出错:"+row+"行 "+column+"列,停止运行");
    }
}

 

**********************

使用测试

 

控制台输出

10:35:50.577 [main] INFO com.example.demo.listener.CustomListener3 - 解析出错:Converter not found, convert STRING to java.time.LocalDateTime
10:35:50.577 [main] ERROR com.example.demo.listener.CustomListener3 - 解析出错:1行 1列
10:35:50.577 [main] DEBUG com.alibaba.excel.analysis.ExcelAnalyserImpl - Custom stop!

抛出ExcelAnalysisStopException异常后,立即停止,不会继续解析

 

 

作者:o_瓜田李下_o
来源链接:https://blog.csdn.net/weixin_43931625/article/details/107567333

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/42184.html

标签: Exception
分享给朋友:

“easyexcel 异常处理” 的相关文章

Java空指针异常解决java.lang.NullPointerException解决心得

Java空指针异常解决java.lang.NullPointerException解决心得

今天做课设的时候运行程序报出以下错误 java.lang.NullPointerException 首先要理解的是此错误并不会在 程序中报错,只会在运行的时候报错。 是由于某个参数(集合,数组等数据)可能出现一个null值而导致后面的程序不能运行时...

java空指针异常:java.lang.NullPointException

一.什么是java空指针异常     我们都知道java是没有指针的,这里说的"java指针"指的就是java的引用,我们不在这里讨论叫指针究竟合不合适,而只是针对这个异常本身进行分析。空指针就是空引用,java空指针异常就是引用本身为空,却调用了方...

Java 异常基础 Exception

Java 异常基础 Exception

Java中的异常。包括异常的基本分类,处理异常的基本方法,自定义异常的方法和常见的一种有关异常的笔试面试题。 Java中的异常 Exception   java.lang.Exception类是Java中所有异常的直接或间接父类。即Exception类是所有异常...

clickhouse 安装启动报<Error> Application: DB::Exception: There is no profile 'default' in configuration file. 以及常见的错误的总结

clickhouse 安装启动报 Application: DB::Exception: There is no profile 'default' in configuration file. 以及常见的错误的总结

1、启动时报错<Error> Application: DB::Exception: There is no profile 'default' in configuration file. 2021.08.07 15:05:30.719723 [ 1 ]...

Exception in thread "main" java.lang.Error: Unresolved compilation problem:

package cn.itcast.day1; //import static java.lang.Math.max; //import static java.lang.Math.*; public class StaticImport { public sta...

Uncaught Error: SECURITY_ERR: DOM Exception 18

Question: I get the following error in Ch...

Error和Exception有什么区别?

Error表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情况下的一种严重问题;比如内存溢出,不可能指望程序能处理这样的情况;Exception表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题;也就是说,它表示如果程序运行正常,从不会发生的情况。...

Android之NetworkOnMainThreadException异常

转载自:https://blog.csdn.net/mad1989/article/details/25964495 看名字就应该知道,是网络请求在MainThread中产生的异常 先来看一下官网的解释: Class Overview The excepti...

AndoridStudio--Error:FAILURE: Build failed with an exception.

相信用过Android Studio开发的朋友都知道,Andorid Studio有时候在运行的时候突然出现如下信息: Error:FAILURE: Build failed with an exception. * What went wrong: Execut...

Android -- Exception大全

异常类型 Exception ArithmeticExecption 算术异常类 NullPointerException...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。