yanghb
2024-12-17 1287337fd0b0c156ec79712f9a600ebeffefe3a6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package com.zzg.common.config;
 
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.exception.ExcelDataConvertException;
import com.alibaba.excel.read.listener.ReadListener;
 
public class ExcelReadListenerConfig<T> implements ReadListener<T> {
 
    @Override
    public void invoke(T data, AnalysisContext context) {
        // 这里可以处理每一行数据的逻辑
        System.out.println("读取到一行数据: " + data);
    }
 
    @Override
    public void onException(Exception exception, AnalysisContext context) throws Exception {
        // 判断是否为数据转换异常
        if (exception instanceof ExcelDataConvertException) {
            ExcelDataConvertException ex = (ExcelDataConvertException) exception;
            int rowIndex = ex.getRowIndex();
            int columnIndex = ex.getColumnIndex();
 
            String errorMessage = String.format("数据转换错误: 第%d行,第%d列,错误值:%s",
                    rowIndex + 1, columnIndex + 1, ex.getCellData().toString());
 
            throw new ExcelDataConvertException(rowIndex + 1, columnIndex + 1, ex.getCellData(), null, errorMessage);
        } else {
            throw exception;
        }
    }
 
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        // 所有数据解析完成后的处理逻辑
        System.out.println("所有数据解析完成");
    }
}