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

简介: 使用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读取(这个后续可能会考虑)
          相关文章
          |
          6月前
          |
          人工智能 缓存 监控
          使用LangChain4j构建Java AI智能体:让大模型学会使用工具
          AI智能体是大模型技术的重要演进方向,它使模型能够主动使用工具、与环境交互,以完成复杂任务。本文详细介绍如何在Java应用中,借助LangChain4j框架构建一个具备工具使用能力的AI智能体。我们将创建一个能够进行数学计算和实时信息查询的智能体,涵盖工具定义、智能体组装、记忆管理以及Spring Boot集成等关键步骤,并展示如何通过简单的对话界面与智能体交互。
          2294 1
          |
          8月前
          |
          数据挖掘 数据库 Python
          Django实战:基于Django和openpyxl实现Excel导入导出功能
          `openpyxl` 是用于处理 Excel 文件的 Python 库。本文详解其在 Django 项目中的实战应用,涵盖 Excel 文件的生成、下载、上传与解析。
          297 0
          Django实战:基于Django和openpyxl实现Excel导入导出功能
          |
          10月前
          |
          SQL 分布式计算 数据挖掘
          从Excel到高级工具:数据分析进阶指南
          从Excel到高级工具:数据分析进阶指南
          456 54
          |
          11月前
          |
          监控 Java Unix
          6个Java 工具,轻松分析定位 JVM 问题 !
          本文介绍了如何使用 JDK 自带工具查看和分析 JVM 的运行情况。通过编写一段测试代码(启动 10 个死循环线程,分配大量内存),结合常用工具如 `jps`、`jinfo`、`jstat`、`jstack`、`jvisualvm` 和 `jcmd` 等,详细展示了 JVM 参数配置、内存使用、线程状态及 GC 情况的监控方法。同时指出了一些常见问题,例如参数设置错误导致的内存异常,并通过实例说明了如何排查和解决。最后附上了官方文档链接,方便进一步学习。
          2195 4
          |
          5月前
          |
          人工智能 监控 Java
          Java与AI智能体:构建自主决策与工具调用的智能系统
          随着AI智能体技术的快速发展,构建能够自主理解任务、制定计划并执行复杂操作的智能系统已成为新的技术前沿。本文深入探讨如何在Java生态中构建具备工具调用、记忆管理和自主决策能力的AI智能体系统。我们将完整展示从智能体架构设计、工具生态系统、记忆机制到多智能体协作的全流程,为Java开发者提供构建下一代自主智能系统的完整技术方案。
          753 4
          |
          6月前
          |
          人工智能 Java API
          Java AI智能体实战:使用LangChain4j构建能使用工具的AI助手
          随着AI技术的发展,AI智能体(Agent)能够通过使用工具来执行复杂任务,从而大幅扩展其能力边界。本文介绍如何在Java中使用LangChain4j框架构建一个能够使用外部工具的AI智能体。我们将通过一个具体示例——一个能获取天气信息和执行数学计算的AI助手,详细讲解如何定义工具、创建智能体并处理执行流程。本文包含完整的代码示例和架构说明,帮助Java开发者快速上手AI智能体的开发。
          2260 8
          |
          10月前
          |
          机器学习/深度学习 消息中间件 存储
          【高薪程序员必看】万字长文拆解Java并发编程!(9-2):并发工具-线程池
          🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中的强力并发工具-线程池,废话不多说让我们直接开始。
          389 0
          |
          9月前
          |
          Java 数据安全/隐私保护 计算机视觉
          银行转账虚拟生成器app,银行卡转账截图制作软件,java实现截图生成工具【仅供装逼娱乐用途】
          本内容提供Java生成自定义图片的示例代码,涵盖基础图像创建、文本添加及保存功能,适合学习2D图形编程。包括教学示例图片生成、文本图层处理和数字水印技术实现方案。
          |
          9月前
          |
          安全 Java 编译器
          JD-GUI,java反编译工具及原理: JavaDecompiler一个Java反编译器
          Java Decompiler (JD-GUI) 是一款由 Pavel Kouznetsov 开发的图形化 Java 反编译工具,支持 Windows、Linux 和 Mac Os。它能将 `.class` 文件反编译为 Java 源代码,支持多文件标签浏览、高亮显示,并兼容 Java 5 及以上版本。JD-GUI 支持对整个 Jar 文件进行反编译,可跳转源码,适用于多种 JDK 和编译器。其原理基于将字节码转换为抽象语法树 (AST),再通过反编译生成代码。尽管程序可能带来安全风险,但可通过代码混淆降低可读性。最新版修复了多项识别错误并优化了内存管理。
          7213 1
          |
          10月前
          |
          人工智能 算法 安全
          使用CodeBuddy实现批量转换PPT、Excel、Word为PDF文件工具
          通过 CodeBuddy 实现本地批量转换工具,让复杂的文档处理需求转化为 “需求描述→代码生成→一键运行” 的极简流程,真正实现 “技术为效率服务” 的目标。感兴趣的快来体验下把
          575 10

          推荐镜像

          更多
        • DNS