Java-easy Excel监听器

使用easyexcel读excel(实现通用listener) 需求 有多张数据需要导入、导出,数据量巨大,决定采用easyExcel实现。 思路 easyExcel读web中的excel,由于不同的excel导入存在mysql中不同的表,若读取每类excel都新建一个ExcetListener处理save逻辑比较麻烦。考虑写一个通用的Listener,实现过程中发现由于excel中没有包含所有需要保存的字段(一部分字段由前端传到后台保存),故改为使用listener将数据读到内存中再进行批量保存处理。(隐患:数据量巨大时是否会导致内存问题)。 ObjectE 阅读详情

实现层:

返回成功失败条数,原因

    public String inportExcel(MultipartFile file) {

        ImportExcelListener excelListener = new ImportExcelListener(budgetIssuedService, budgetIssuedRepository, year);
        try {
            EasyExcel.read(multipartFileToFile(file), AnnualBudgetExport.class, excelListener).headRowNumber(5).doReadAll();
        } catch (Exception exception) {
            return "数据格式异常";
        }

        return excelListener.message();
    }

 监听器:

@Data
public class ImportExcelListener extends AnalysisEventListener<AnnualBudgetExport> {
    private final Logger log = LoggerFactory.getLogger(AnnualBudgetExport.class);
    @Autowired
    BudgetIssuedRepository budgetIssuedRepository;
    List<AnnualBudgetExport> list = new ArrayList<>();

    String type = "1";
    int empty = 0;
    int success = 0;
    int error = 0;
    Integer year;

    BudgetIssuedService budgetIssuedService;

    List<String> errmessage = new ArrayList<>();

    public ImportExcelListener(BudgetIssuedService budgetIssuedService, BudgetIssuedRepository budgetIssuedRepository, Integer year) {
        this.budgetIssuedService = budgetIssuedService;
        this.budgetIssuedRepository = budgetIssuedRepository;
        this.year = year;

    }

    @Override
    public void invoke(AnnualBudgetExport simpleModel, AnalysisContext analysisContext) {
        list.add(simpleModel);
        if (list.size() >= 5) {
            saveData();
            list.clear();
        }
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        saveData();
        log.info("所有数据解析完成");
    }


    public void saveData() {
        log.info("{}条数据,开始存储", list.size());

        DecimalFormat df = new DecimalFormat("#.00");
        for (AnnualBudgetExport bugget : list) {

            //处理数据            

            try {
                budgetIssuedService.addDeptBudget(bugget);
                success++;
            } catch (Exception e) {
                error++;
                errmessage.add(bugget.getThirdDep()+":"+e.getMessage());
            }

        }
    }

    public String message() {
        if (error>0)
        {
            return String.format("成功:%d条 失败:%d条<br> 失败列表:<br>%s",success,error,StringUtils.join(errmessage,"<br>"));
        }else if(error==0&&success==0){
            return  "不可导入空表";
        }else
        {
            return null;
        }
    }

}

EasyExcel导入数据 简单的用 java完成excel表格导入数据 阅读详情

相关推荐

[EasyExcel]: 使用AnalysisEventListener回调监听器读取Excel

【代码】[EasyExcel]: 使用AnalysisEventListener回调监听器读取Excel。

Xin Adn Meng 7082

SpringBoot集成阿里easyexcel(二)Excel监听以及常用工具类

通过excel监听类,实现对数据解析时的监听,主要包括对表头、每行数据的校验并返回错误信息。在表格解析发生严重错误时,通过监听类拦截与处理并返回提示信息

her_he的博客 4805

一款阿里开源解析excel框架“easy-excel“

前言 又写bug呢?当我们线上遇到bug的时候,可能需要修复数据,那么这时候怎么办呢?你很慌了,打开离线表一顿猛之后,得到了一份要修复的数据,然后写了一段修复脚本,准备发布修复一下时候,这时候问题来了,怎么解析数据呢,加载这份数据到内存里,然后依次读取修复吗?太慢啦。 这里介绍一款阿里开源解析excel框架 easy-excel。 是什么 这里引用下官方的介绍 Java解析、生成Excel比较有名的框架有Apache、poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的AP

m0_57227221的博客 936

使用easyexcel导入表格时接收前端的参数,并传入监听器

在使用easyexcel导入表格时,难免少不了前端传参给后台操作,那如何在监听器中接收呢,在GitHub中easyexcel的开发人员给出了答案。实现以上步骤,就能从监听器拿到值并且进行对值进行操作。成员变量+构造函数形式处理。

谢哥哥的博客 3084

Java 整合Apache POI 以及 Easy Excel 操作 Excel 文件

Java领域解析、生成操作Excel一般有 Apachepoi与Easy Excel 两种方法。Apachepoi存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的full gc。所以我们先介绍一下Easy Excel方法EasyExcel是阿里巴巴开源的一个excel处理框架,以使用简单、节省内存著称。

pioneer_fearless的博客 473

Multisim仿真入门:单相半波可控整流电路从搭建到波形分析(附避坑指南)

本文为电力电子技术初学者提供了一份详细的Multisim仿真指南,手把手教你从零搭建单相半波可控整流电路。通过对比纯电阻、阻感负载及加入续流二极管后的波形变化,直观理解晶闸管触发、电感续流等核心原理,并附有实用的参数设置与常见问题避坑指南,帮助你将抽象理论转化为可视化的工程实践。

weixin_29208077的博客 343

Java 使用 Easy Excel 进行 Excel 数据导入导出

本文介绍了使用EasyExcel库进行Excel数据读写的方法。首先通过Maven添加依赖,然后创建映射Excel结构的实体类。读取Excel可采用基本读取或自定义监听器方式,处理数据更灵活。写入Excel支持基本写入和复杂样式设置。最后展示了批量导入数据到数据库的实际应用。EasyExcel简化了Java处理Excel的操作,适合各种数据导入导出场景。

Y1_again_0_again的博客 685

晶圆测试(Wafer Sort)的核心技术与良率提升策略

晶圆测试(Wafer Sort)是芯片制造中的关键“入学考试”,通过探针台与自动测试设备(ATE)对晶圆上的芯片进行功能与参数测试,筛选不合格芯片以控制成本。本文深入解析了其核心技术,包括自动化视觉系统对准、测试流程优化策略,并探讨如何利用测试数据驱动良率提升,展望了DFT与AI智能测试的未来趋势。

e4f5g6h的博客 517

Easy Excel组件实战教程:从依赖引入到案例实践

本文介绍了使用EasyExcel库进行Excel文件读写操作的方法。主要内容包括: Maven依赖配置:提供了在pom.xml中添加EasyExcel依赖的代码片段,并建议通过Maven中央仓库查询最新版本号。 Excel写入操作: 通过@ExcelProperty注解定义实体类与Excel列的映射关系 使用EasyExcel.write()链式API实现数据写入 包含完整的写入示例代码 Excel读取操作: 基于监听器模式实现流式读取 自定义监听器继承AnalysisEventListener类处理数据

wenleyuasdnhy的博客 1114

QT插件学习系列(一) 初识QtPlugin

QT插件学习系列(一) 初识QtPlugin 1、 概述 为什么我们要学习插件化,其和 windows 导出 dll 有什么区别呢? 导出的动态库如果缺失,程序不能运行。但插件可以。 同一套代码,即可分别在 windows 下和 linux 下生成插件。 QT 本身提供两种插件支持,一种称为高级 API,一种称为低级 API。 高级API的作用是扩展 QT 程序本身,需要子类化 QT 提供的插件基类,例如现有的 QTSqlDriver,因此你可也以编写自己的 QTStyle 扩展 QT。 低级

L_Andy的专栏 3113

C51单片机驱动ILI9341彩屏实战:从Proteus仿真到绘制自定义图案(附完整代码)

本文详细介绍了使用C51单片机驱动ILI9341彩屏的完整实战流程。内容涵盖硬件连接、8080并行接口时序模拟、寄存器初始化、屏幕方向设置以及基本图形绘制原理,并重点讲解了如何在Proteus仿真环境中搭建电路、调试代码,最终实现自定义图案的显示。文章提供了完整的代码示例,为嵌入式开发学习者和复古硬件爱好者提供了一套可行的解决方案。

rnn9storyteller的博客 511

Easy-Excel简单使用

但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,改用easyexcel可以降低到几M,并且再大的excel也不会出现内存溢出。@NumberFormat 数据格式转换 如:@NumberFormat(value = “#.##%”) 0.3947 -> 39.47%

qq_53519086的博客 648

最佳解决Maven同一依赖多版本共存问题,重复依赖(同一个jar包,多个版本)-maven-shade-plugin

公司的历史项目在导出功能上引用的是poi-3.12版本,后续再做word模板导出功能时用到了poi-3.15版本,升级完后发现项目的很多导出功能都瘫痪了。用旧版本,新功能无法使用;用新版本,旧功能瘫痪,且整改的工作量比较大。使用maven-shade-plugin,将某个版本的依赖名称进行修改,重新引入即可。

S_White_Island的博客 1万+

Easy-excel监听器中对批量上传的工单做错误收集

Easy-excel监听器中对批量上传的工单做错误收集

qq_46603351的博客 603

【GD32篇】驱动AD7616完成数据采集

GD32F10X驱动AD7616完成数据采集

we_long的博客 1万+

保姆级避坑指南:用Keil和J-Flash搞定凌思微LE5010蓝牙芯片的首次程序下载

本文提供了一份详细的保姆级避坑指南,帮助开发者使用Keil和J-Flash工具完成凌思微LE5010蓝牙芯片的首次程序下载。文章重点解决了算法文件混淆、协议栈漏烧和仿真器连接异常等常见问题,并详细介绍了开发环境配置、协议栈烧录和下载接口的物理层奥秘,助力开发者高效完成蓝牙开发任务。

weixin_28739079的博客 467

Easy Excel 解析Excel

Easy Excel 解析Excel

Caiden_Michael 3218

18、知识表示与学习范式

本文探讨了智能系统中的核心组成部分——知识表示与学习范式。从基础知识到实际应用,详细解析了符号表示、框架表示、语义网络和本体表示等知识表示方法,并介绍了监督学习、无监督学习、半监督学习和强化学习等学习范式。此外,还深入分析了这些技术在自然语言处理、图像识别和推荐系统等领域的具体应用及操作步骤。最后,展望了未来可能的技术发展方向。

ttt77的博客 84

Easy Excel的导入监听器通用方法

Easy ·Excel 导入监听器通用方法

weixin_50097893的博客 3140

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Easy Excel 使用总结

Easy Excel 使用总结

凡的博客 7130

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Java 读取 Excel 表格—— Easy Excel 基本使用

【代码】Java 读取 Excel 表格—— Easy Excel 基本使用。

小秀的博客 1492

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Easy Excel 使用快速入门

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、Easy Excel是什么?二、使用EasyExcel 实现读操作1.导入依赖2.创建要读取数据的封装类3.创建读取excel 监听器调用监听器三 使用EasyExcel 实现写操作**写操作有两种写法,一种是不创建对象的写入,另一种是根据对象写入。这里主要介绍创建对象写入**创建对象写入总结 前言 使用spring boot 对excel 进行操作在平时项目中要经常使用。常见通过jxl和poi 的方式进行操作。但他们都存

weixin_39802680的博客 4937

Java操作Excel - Easy Excel

阿里巴巴Easy Excel的读和写的教程,快速使用Java操作excel表格。

码赛客1024的博客 4587

【Java实现 通过Easy Excel完成对excel文本数据的读写】

Java实现 通过Easy Excel完成对excel文本数据的读写,解决POI处理大文件内存溢出

高克莱的博客 1539

通过Easy Excel导入数据

大概2023年7月6号,整了一个180天倒计时(距离2024元旦),设定了一些计划,通过腾讯在线文档记录每天完成情况。突然想起来,今年五一的时候,搭建了一个系统,就是上面的。,想着要不把180天倒计时计划表导入数据库,之前也做过解析excel,是通过poi,,每遍历完一个记得清空数据,图中。试一下,听名字就感觉比较简单。数据,以便在处理下一个。

1975

使用 Easy Excel 插件实现Excel文件高效导入导出接口

EasyExcel是一个基于Java的开源Excel工具,它提供了方便的API来读取和写入Excel文件。与Apache POI相比,EasyExcel具有更高的性能和更简洁的编程方式。它可以轻松地处理大量数据并生成复杂的Excel文件。通过EasyExcel插件,我们可以轻松地实现导入和导出Excel文件的功能。使用它可以减少开发工作量,提高开发效率,并且支持大数据量的读写操作。

最难不过坚持,与你共同进步 2083
上一篇: java-数据导出到word文件
下一篇: java-easyExcel导出-合并单元格
UID_UUID
博客等级 码龄5年 352粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值