使用EasyExcel导入导出Excel报表-JAVA解析Excel工具

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 使用EasyExcel导入导出Excel报表-JAVA解析Excel工具

一、EasyExcel概述

 

Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,能够原本一个3M的excel用POI sax依然需要100M左右内存降低到几M,并且再大的excel不会出现内存溢出,03版依赖POI的sax模式。在上层做了模型转换的封装,让使用者更加简单方便。

github地址:GitHub - alibaba/easyexcel: 快速、简洁、解决大文件内存溢出的java处理Excel工具

使用文档:https://alibaba-easyexcel.github.io/

官方给出的数据,64M内存1分钟内读取75M(46W行25列)的Excel,当然还有急速模式能更快,但是内存占用会在100M多一点:

image.gif编辑

二、EasyExcel常用功能

读Excel

    写Excel

      填充Excel

        三、EasyExcel使用方法和调优

        官方除了文档外,还提供了强大的demo代码。代码就不贴了,我只给出maven坐标:

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>2.1.4</version>
        </dependency>

        image.gif

        默认大文件处理

        默认大文件处理会自动判断,共享字符串5M以下会使用内存存储,大概占用15-50M的内存,超过5M则使用文件存储,然后文件存储也要设置多内存M用来存放临时的共享字符串,默认20M。除了共享字符串占用内存外,其他占用较少,所以可以预估10M,所以默认大概30M就能读取一个超级大的文件。

        根据实际需求配置内存

        四、EasyExcel的核心原理

        1、文件解压文件读取通过文件形式

        网络异常,图片无法展示
        |
        image.gif 编辑

        2、避免将全部全部数据一次加载到内存

        采用sax模式一行一行解析,并将一行的解析结果以观察者的模式通知处理。

        网络异常,图片无法展示
        |
        image.gif 编辑

        3、抛弃不重要的数据

        Excel解析时候会包含样式,字体,宽度等数据,但这些数据是我们不关心的,如果将这部分数据抛弃可以大大降低内存使用。Excel中数据中Style占了相当大的空间。

        五、该项目的优缺点

        该项目不是阿里重点项目,目前只有三个人维护,但项目很活跃,获得的star数也很高,可以作为生产来使用。但要注意,目前还有以下功能尚未实现:

          • 单个文件的并发写入、读取
          • 读取图片
          • csv读取(这个后续可能会考虑)
          相关文章
          |
          28天前
          |
          缓存 easyexcel Java
          Java EasyExcel 导出报内存溢出如何解决
          大家好,我是V哥。使用EasyExcel进行大数据量导出时容易导致内存溢出,特别是在导出百万级别的数据时。以下是V哥整理的解决该问题的一些常见方法,包括分批写入、设置合适的JVM内存、减少数据对象的复杂性、关闭自动列宽设置、使用Stream导出以及选择合适的数据导出工具。此外,还介绍了使用Apache POI的SXSSFWorkbook实现百万级别数据量的导出案例,帮助大家更好地应对大数据导出的挑战。欢迎一起讨论!
          148 1
          |
          1月前
          |
          人工智能 Python
          读取excel工具:openpyxl | AI应用开发
          `openpyxl` 是一个 Python 库,专门用于读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件。它是处理 Excel 文件的强大工具,可以让你在不需要安装 Excel 软件的情况下,对 Excel 文件进行创建、修改、读取和写入操作【10月更文挑战第3天】
          67 0
          |
          3月前
          |
          关系型数据库 MySQL Shell
          不通过navicat工具怎么把查询数据导出到excel表中
          不通过navicat工具怎么把查询数据导出到excel表中
          44 0
          |
          12天前
          |
          SQL 数据可视化 数据挖掘
          想让Excel表格设计更美观?试试这几款好用工具!
          Excel表格设计在项目管理和数据分析中至关重要。本文推荐四款辅助工具:板栗看板、Excel自动图表助手、Think-Cell Chart 和 Power BI,分别在任务管理、图表生成、数据可视化等方面表现突出,帮助你设计出更专业、美观的表格。
          29 2
          |
          23天前
          |
          数据处理
          在Excel中,通配符是一种强大的工具
          【10月更文挑战第23天】在Excel中,通配符是一种强大的工具
          19 4
          |
          1月前
          |
          easyexcel Java UED
          SpringBoot中大量数据导出方案:使用EasyExcel并行导出多个excel文件并压缩zip后下载
          在SpringBoot环境中,为了优化大量数据的Excel导出体验,可采用异步方式处理。具体做法是将数据拆分后利用`CompletableFuture`与`ThreadPoolTaskExecutor`并行导出,并使用EasyExcel生成多个Excel文件,最终将其压缩成ZIP文件供下载。此方案提升了导出效率,改善了用户体验。代码示例展示了如何实现这一过程,包括多线程处理、模板导出及资源清理等关键步骤。
          |
          3月前
          |
          数据可视化 数据格式 索引
          我用Python操作Excel的两种主要工具
          我用Python操作Excel的两种主要工具
          |
          3月前
          |
          人工智能 自然语言处理 小程序
          【工具】Excel竟然也能搞AI,快来玩转chatexcel
          ChatExcel是由北京大学团队开发的一款人工智能办公辅助工具,用户可通过自然语言与Excel表格互动,简化数据处理任务,如排序、求和等,无需手动编写公式或函数。本文介绍了ChatExcel的功能特点、使用方法及实操步骤,展示了如何通过简单指令完成复杂操作,提高工作效率。此外,还提供了新手指南帮助快速上手。
          139 0
          【工具】Excel竟然也能搞AI,快来玩转chatexcel
          |
          3月前
          |
          easyexcel Java 关系型数据库
          阿里巴巴-EasyExcel 基于Java的简单、省内存的读写Excel
          该文章主要介绍了在Java应用中如何使用EasyExcel技术完成对Excel文件的导入和导出操作,包括环境搭建、基本概念、快速入门、进阶操作和综合应用等内容,并提供了相关代码示例和注意事项。
           阿里巴巴-EasyExcel 基于Java的简单、省内存的读写Excel
          |
          3月前
          |
          JavaScript 前端开发 easyexcel
          基于SpringBoot + EasyExcel + Vue + Blob实现导出Excel文件的前后端完整过程
          本文展示了基于SpringBoot + EasyExcel + Vue + Blob实现导出Excel文件的完整过程,包括后端使用EasyExcel生成Excel文件流,前端通过Blob对象接收并触发下载的操作步骤和代码示例。
          653 0
          基于SpringBoot + EasyExcel + Vue + Blob实现导出Excel文件的前后端完整过程

          热门文章

          最新文章

          推荐镜像

          更多