使用EasyExcel读写Excel文件

这篇具有很好参考价值的文章主要介绍了使用EasyExcel读写Excel文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

笔者之前一直使用POI读写Excel文件,最近有个需求需要读取大概80万行数据的Excel,使用POI读取到10.2万行左右就卡死不动了,而且CPU占用直接拉满到100%,内存占用也很高。

查找资料后,发现POI提供了读取大量数据的方法,但是用起来比较复杂。同时看到有人提到用EasyExcel读取Excel的速度快,资源占用少。于是换成EasyExcel去读取那个80万行数据的Excel,发现读取速度确实很快,CPU和内存占用也很少。

然而EasyExcel的官方文档中,最简单的读写代码都是默认与数据库有交互,写了一些分页读写数据库的代码,还是不够简洁。所以个人参考EasyExcel的官方文档,写了一个更加简洁、清晰的,使用EasyExcel读取Excel的样例。


1.在pom.xml中添加POI相关依赖

        <!-- easyexcel -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel-core</artifactId>
            <version>3.3.2</version>
        </dependency>

2.实体类

package com.example.study.entity;


import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;

import java.util.Date;

@Getter
@Setter
public class StudentEntity {
    @ExcelProperty(value = "id", order = 1)
    private Integer id;

    @ExcelProperty(value = "生日", order = 4)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date birthday;

    @ExcelProperty(value = "名字", order = 2)
    private String name;

    @ExcelProperty(value = "性别", order = 3)
    private String sex;
}

3.读取Excel的类文章来源地址https://www.toymoban.com/news/detail-541548.html

package com.example.study.common;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.fastjson.JSON;
import com.example.study.entity.StudentEntity;
import lombok.extern.slf4j.Slf4j;

import java.util.ArrayList;
import java.util.List;

@Slf4j
public class EasyExcelDemo {
    public static void main(String[] args) {
        String readExcel = "F:\\tmp\\students.xlsx";
        String writeExcel = "F:\\tmp\\students-write.xlsx";
        List<StudentEntity> list = read(readExcel);
        write(writeExcel, list);
    }

    private static void write(String fileName, List<StudentEntity> list) {
        EasyExcel.write(fileName)
                .head(StudentEntity.class)
                .sheet("EasyExcel Writed 1")
                .doWrite(list);
    }


    private static List<StudentEntity> read(String excel) {
        List<StudentEntity> list = new ArrayList<>();
        EasyExcel.read(excel)
                .head(StudentEntity.class)
                .sheet(1)
                .registerReadListener(new ReadListener<StudentEntity>() {
                    @Override
                    public void invoke(StudentEntity entity, AnalysisContext analysisContext) {
                        list.add(entity);
                        System.out.println("每读取到一行数据就会执行该方法:" + JSON.toJSONString(entity));
                    }

                    @Override
                    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
                        System.out.println("所有数据读取完成后执行该方法");
                    }
                }).doRead();
        return list;
    }
}

到了这里,关于使用EasyExcel读写Excel文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 后端:使用easyExcel实现解析Excel文件读取数据。前端:Excel模板下载、前端上传文件

            本篇是EasyExcel快速入门知识,讲解如何读取Excel文件,对Excel中错误信息如空字符、必填项为空、表格格式校验做到处理 ,并给出了实际项目中示例代码;为什么要使用easyexcel;原因是相比于poi,easyexcel更加轻量级,读取写入API方便,并且在工作中占用内存较小;

    2024年02月05日
    浏览(69)
  • EasyExcel读取EXcel文件内容

    目录 一 官方文档介绍 二 读取文件内容 1.根据文档内容建立读对象 2.创建读监听器 3.测试类代码 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一

    2024年02月14日
    浏览(55)
  • EasyExcel轻松读取Excel文件!

    EasyExcel是一个Java库,用于快速、简单地读写Excel文件。要使用EasyExcel,您首先需要将其添加为项目的依赖: 如果使用Maven,可以添加以下依赖项: 一下几种方式读取文件 1、EasyExcel.read() 例如,下面的代码演示了如何使用EasyExcel读取一个Excel文件中的数据: 在上面的代码中,

    2024年02月09日
    浏览(35)
  • EasyExcel知识【Java程序进行读写生成Excel操作】

    💂 个人主页:  爱吃豆的土豆 🌈欢迎加入社区,福利多多哦!土豆社区 🤟数据库专栏更新完毕: 数据库知识 🤟JDBC专栏更新完毕: JDBC知识 🤟Mybatis专栏更新完毕: Mybatis知识 💬 如果文章对你有帮助、 欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 目录 1,Easy Excel入门

    2023年04月08日
    浏览(46)
  • 使用Easyexcel对Excel进行读写操作

    EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。 github地址:GitHub - alibaba/easyexcel: 快速、简洁、解决大文件内存溢出的java处理Excel工具 通过java代码完成对Excel的读写操作,所谓的读写理解为上传和下载 官网:关于E

    2024年02月11日
    浏览(35)
  • Apache POI及easyExcel读取及写入excel文件

    目录 1.excel 2.使用场景 3.Apache POI 4.easyExcel 5.总结 1.excel excel分为两版,03版和07版。 03版的后缀为xls,最大有65536行。 07版的后缀为xlsx,最大行数没有限制。 2.使用场景 将用户信息导出到excel表格中。 将excel中的数据读取到数据库中。 3.Apache POI (1)说明 Apache POI是Apache软件基金会

    2024年02月06日
    浏览(49)
  • 【JAVA】easyexcel 导出excel文件带多个图片

    最终效果  pom版本 实现代码  

    2024年02月16日
    浏览(35)
  • 【Java结合EasyExcel,模板文件填充并导出Excel】

    需求描述: 客户网页上填一个Excel表格,数据存到数据库,这个导出接口要做的就是从数据库中的获取数据并填充到模板文件,最后通过response返给前端一个下载链接,用户即可获取填充好的Excel文件。 方案一: 一开始使用的是easypoi,发现当填充一行数据时是OK的,但是如果

    2024年02月09日
    浏览(56)
  • 基于EasyExcel的Excel读取

    1.引入依赖 2.读取器代码: 3.测试

    2024年02月12日
    浏览(43)
  • EasyExcel读取多sheet excel异常

    使用Spring Boot集成EasyExcel进行导入excel多sheet,执行异常 file是MultipartFile,入参,主要处理流程如下 异常: com.alibaba.excel.exception.ExcelCommonException: Convert excel format exception.You can try specifying the ‘excelType’ yourself 按照描述,缺少excelType参数,补充后,代码大概如下: 异常: com.

    2024年02月16日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包