EasyExcel实现Excel解析并返回解析失败数据思路

EasyExcel实现Excel解析并返回解析失败数据思路

  1. 需求说明

项目中需要使用到Excel文件上传,处理解析Excel表格数据落库,并返回处理失败的统计数据;

  1. 相关技术及插件

这里选择使用阿里开源的EasyExcel来做Excel表格数据的主要处理工具;

相关maven依赖暂不赘述,需要自行百度,后期会补充上;

  1. 代码思路梳理

a) 参考借鉴文档编写监听器

借鉴示例:https://www.yuque.com/easyexcel/doc/read#5c70a7ac

b) 自定义监听器中可以添加一个List/Map类型的变量用来记录解析失败的数据集

c) 监听器中重写onException方法,在数据解析失败时,将失败信息记录到上一步添加的失败结果集中;

借鉴示例:https://www.yuque.com/easyexcel/doc/read#5c70a7ac-6

d) 在进行数据处理时,可以使用转换器,自定义转换器,重写相关方法并在方法内进行数据的非空等数据校验,校验失败抛出相应异常提示信息;

借鉴示例:https://www.yuque.com/easyexcel/doc/read#f69f4ca7

e) 转换过程中的异常信息在监听器中的onException方法中做相应处理,存入异常结果集中;

f) 方法执行完成后获取异常结果集返回给前端显示;

在读取excel时不能使用同步返回方式,使用此方式不会走监听器

此文章暂时处于理论阶段,并未做实际代码开发;如果存在错误,或者哪位仁兄有更高的见解,欢迎指导评论

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,根据您的问题,我假设您已经使用EasyExcel成功解析Excel表格,并且得到了解析结果。现在您需要将解析结果添加到Excel表格中,并将更新后的数据写出到指定的目标中。可以按照以下步骤操作: 1. 定义要添加的解析结果 假设您要将解析结果添加到第二列中,可以定义一个List,存放解析结果: ``` List<String> result = new ArrayList<>(); result.add("解析结果1"); result.add("解析结果2"); result.add("解析结果3"); // ... ``` 2. 读取Excel表格 使用EasyExcel读取Excel表格,得到Excel表格的数据: ``` // 定义Excel读取监听器 ReadListener listener = new ReadListener() { // 实现onRead方法,在读取到每一行数据时调用 @Override public void onRead(List<Object> data, AnalysisContext context) { // 处理读取到的数据 } }; // 使用EasyExcel读取Excel表格 ExcelReader reader = EasyExcel.read("input.xlsx", listener).build(); reader.read(); ``` 3. 在监听器中添加解析结果 在监听器的`onRead`方法中,将解析结果添加到Excel表格中: ``` // 定义Excel读取监听器 ReadListener listener = new ReadListener() { // 实现onRead方法,在读取到每一行数据时调用 @Override public void onRead(List<Object> data, AnalysisContext context) { // 将解析结果添加到第二列中 data.add(1, result.get(context.readRowHolder().getRowIndex())); } }; // 使用EasyExcel读取Excel表格 ExcelReader reader = EasyExcel.read("input.xlsx", listener).build(); reader.read(); ``` 4. 写出更新后的数据 使用EasyExcel的write方法,将更新后的数据写出到指定的目标中,例如写出到本地文件: ``` // 创建ExcelWriter对象 ExcelWriter writer = EasyExcel.write("output.xlsx").build(); // 写出数据Excel文件中 writer.write(data, sheet); // 关闭ExcelWriter对象 writer.finish(); ``` 其中,data表示更新后的数据,sheet表示要更新的sheet。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值