Alibaba EasyExcel介绍和简单使用

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

目录

一、Excel导入导出的应用场景

1、数据导入

2、数据导出

3、数据传输

二、EasyExcel简介

1、官方网站

2、EasyExcel特点

三、easyExcel的简单使用

(一)写

1、创建实体类

2、最简单的写

3、不同版本的写

4、写入大数据量

 (二)读

1、参考文档

2、创建监听器

3、测试用例


一、Excel导入导出的应用场景

1、数据导入

减轻录入工作量

2、数据导出

统计信息归档

3、数据传输

异构系统之间数据传输

二、EasyExcel简介

常见excel分析框架:POI、EasyExcel

1、官方网站

https://github.com/alibaba/easyexcel

快速开始:关于Easyexcel | Easy Excel

2、EasyExcel特点

  • Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的full gc。
  • EasyExcel是阿里巴巴开源的一个excel处理框架,以使用简单、节省内存著称。EasyExcel能大大减少占用内存的主要原因是在解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个解析。
  • EasyExcel采用一行一行的解析模式,并将一行的解析结果以观察者的模式通知处理(AnalysisEventListener)。

三、easyExcel的简单使用

1、创建一个普通的maven项目

项目名:alibaba-easyexcel

2、pom中引入xml相关依赖

<dependencies>

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

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.5</version>
    </dependency>

    <dependency>
        <groupId>org.apache.xmlbeans</groupId>
        <artifactId>xmlbeans</artifactId>
        <version>3.1.0</version>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.12</version>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>

</dependencies>

(一)写

1、创建实体类

package com.atguigu.easyexcel.dto;

import lombok.Data;

import java.util.Date;

@Data
public class ExcelStudentDTO {

    private String name;
    private Date birthday;
    private Double salary;
}

2、最简单的写

这些代码在官方文档可以看到

public class ExcelWriteTest {

    @Test
    public void simpleWriteXlsx() {
        // 注意 simpleWrite在数据量不大的情况下可以使用(5000以内,具体也要看实际情况),数据量大参照 重复多次写入

        // 写法1 JDK8+
        // since: 3.0.0-beta1
        String fileName =  "D:/idealworkspace/shangrb/excel/simpleWrite.xlsx";
        // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
        // 如果这里想使用03 则 传入excelType参数即可
        EasyExcel.write(fileName, ExcelStudentDTO.class)
                .sheet("模板")
                .doWrite(data());
    }


    private List<ExcelStudentDTO> data() {
        List<ExcelStudentDTO> list = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            ExcelStudentDTO data = new ExcelStudentDTO();
            data.setName("字符串" + i);
            data.setBirthday(new Date());
            data.setSalary(0.56);
            list.add(data);
        }
        return list;
    }
}

运行后在D:/idealworkspace/shangrb/excel/生成了xlsx后缀的文件,列名为属性名,表明为我们指定的“模板”

阿里easyexcel,尚融宝,java,后端,excel,intellij-idea

阿里easyexcel,尚融宝,java,后端,excel,intellij-idea

 使用@ExcekProperty注解添加列名后重新运行程序,记得先关闭excel文档

@Data
public class ExcelStudentDTO {
    @ExcelProperty("姓名")
    private String name;

    @ExcelProperty("生日")
    private Date birthday;

    @ExcelProperty("薪资")
    private Double salary;
}

阿里easyexcel,尚融宝,java,后端,excel,intellij-idea

3、不同版本的写

我们在创建下面几种文件时可以看到有两种后缀的文件,这其实是历史问题,03年的时候出现了三个字母后缀的文件,在07年的时候更新出现了四个字母的文件,这两种后缀的文件现在仍在大规模使用,我们上面的代码是对xlsx的写入,而xls的写入也是我们必须掌握的。

阿里easyexcel,尚融宝,java,后端,excel,intellij-idea

    @Test
    public void simpleWriteXls() {

        String fileName =  "D:/idealworkspace/shangrb/excel/simpleWrite.xls";
        EasyExcel.write(fileName, ExcelStudentDTO.class)
                .sheet("模板")
                .doWrite(data());
    }

xlsx的优势是占用磁盘的内存更少。同样的写入65535条数据,两个文件的大小如下:

阿里easyexcel,尚融宝,java,后端,excel,intellij-idea

4、写入大数据量

xls 版本的Excel最多一次可写0 ...65535行

xlsx 版本的Excel最多一次可写0...1048575行

@Test
    public void simpleWriteXls() {
        //算上标题,做多可写65536行
        //超出:java.lang.IllegalArgumentException: Invalid row number (65536) outside allowable range (0..65535)
        String fileName =  "D:/idealworkspace/shangrb/excel/simpleWrite.xls";
        EasyExcel.write(fileName, ExcelStudentDTO.class)
                .sheet("模板")
                .doWrite(data());
    }


    private List<ExcelStudentDTO> data() {
        List<ExcelStudentDTO> list = new ArrayList<>();
        for (int i = 0; i < 65536; i ++) {
            ExcelStudentDTO data = new ExcelStudentDTO();
            data.setName("字符串" + i);
            data.setBirthday(new Date());
            data.setSalary(0.56);
            list.add(data);
        }
        return list;
    }

阿里easyexcel,尚融宝,java,后端,excel,intellij-idea

 (二)读

1、参考文档

读Excel | Easy Excel

2、创建监听器

@Slf4j
public class ExcelStudentDTOListener extends AnalysisEventListener<ExcelStudentDTO> {

    /**
     * 这个每一条数据解析都会来调用
     */
    @Override
    public void invoke(ExcelStudentDTO data, AnalysisContext context) {
        log.info("解析到一条数据:{}", data);

    }

    /**
     * 所有数据解析完成了 都会来调用
     */
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        log.info("所有数据解析完成!");
    }
}

3、测试用例

public class ExcelReadTest {
    /*
     * 最简单的读
     *
     */
    @Test
    public void simpleReadXlsx() {
        String fileName = "D:/idealworkspace/shangrb/excel/simpleWrite.xlsx";
        EasyExcel.read(fileName, ExcelStudentDTO.class, new ExcelStudentDTOListener()).sheet().doRead();
    }

    /*
     * 03版本读
     */
    @Test
    public void simpleReadXls() {
        String fileName = "D:/idealworkspace/shangrb/excel/simpleWrite.xls";
        EasyExcel.read(fileName, ExcelStudentDTO.class, new ExcelStudentDTOListener())
                .excelType(ExcelTypeEnum.XLS).sheet().doRead();
    }
}

效果:

阿里easyexcel,尚融宝,java,后端,excel,intellij-idea文章来源地址https://www.toymoban.com/news/detail-791364.html

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

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

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

相关文章

  • 使用java解析和读取excel表格(EasyExcel的简单使用)

    ** ** Apache POI、JXL、Alibaba EasyExcel等。其中Apache POI基于DOM方式进行解析,将文件直接加载内存,所以速度较快,适合Excel文件数据量不大的应用场景; EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。他能让你在不用考虑性能、内存的等因素的情况下

    2024年01月16日
    浏览(48)
  • 使用EasyExcel实现excel导出,支持百万大数据量导出-----超简单

    通过设置sheet数量,完成分批导出,每个sheet存100万数据,每次查询插入20万数据,避免超时,内存溢出等问题,可以根据服务器配置调整参数设置。 1.引入依赖 2.创建对应的实体类 @ExcelProperty设置的就是导出的列名,还可以设置排序等等 3.核心导出代码 4.配置类 至此就完成导

    2024年02月11日
    浏览(62)
  • 阿里EasyExcel快速导出demo

    引入阿里easyExcel依赖 自定义的阿里easyexcel拦截器方法 自定义的EasyExcelUtils方法类 调用示例

    2024年02月12日
    浏览(43)
  • EasyExcel入门小demo,简单理解EasyExcel

    一、什么是EasyExcel EasyExcel是阿里巴巴开源的一个excel处理框架, 以使用简单、节省内存著称 。该项目实现了列表数据的导入,分页列表导出,支持自定义格式,支持模版以及模板和列表的混合导出,小巧、简易、高性能。 二、使用 1.pom.xml  2.实体类(需要写入excel的类) 

    2023年04月22日
    浏览(27)
  • 【Alibaba工具型技术系列】「EasyExcel技术专题」实战技术针对于项目中常用的Excel操作指南

    EasyExcel教程 本文使用的技术是Alibaba集团开源的EasyExcel技术,该技术是针对Apache POI技术的封装和优化,主要解决了POI技术的耗内存问题,并且提供了较好的API使用。 使用步骤繁琐 动态写出Excel操作非常麻烦 对于新手来说,很难在短时间内上手 读写时需要占用较大的内容,当

    2024年01月19日
    浏览(45)
  • EasyExcel简单实例

    导入easyExcel依赖,注意版本: 源表: 1. 编写实体类 可以使用 @ExcelProperty 指定数据封装为实体类对象的规则,后面可以跟index 和 列名(二选一); 若不加注解则按照默认封装规则: ①根据 Excel 列与实体类属性的顺序②根据 Excel 列的单元格式与对象字段类型匹配。 2. 监听器

    2024年01月24日
    浏览(46)
  • EasyExcel的简单导出

    EasyExcel的简单导出 Controller层代码 Service处理代码 SysColExcelDto.java类 这是使用easyExcel提供的注解来标记字段填充行数,这种情况适用于自动生成,如果是填充excel(doFill方式)可以不用ExcelProperty注解标识,但是需要在模板中标记数据填充位置 模板标记数据填充位置标记如下,

    2024年02月15日
    浏览(38)
  • EasyExcel入门(最简单的读)

    官网:EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel (alibaba.com) 因为暂时项目没有用到,所以不急,知道了这个技术。就想着学着用一下!   先看官方文档给的用法和解释!!!   自己准备一个Excel表格。 官方提供了4种写法 写法一: 点击PageReadListener查看源码:  默认

    2024年02月09日
    浏览(45)
  • EasyExcel如何导出数据?超级简单,看这就够了

    我们可以在官网找到相关代码 前端我们直接调用这个方法就行 其实很简单,只需要在我们实体类上加上 用法如下所示 easyExcel是一个非常简单好用的数据导出导入工具,easyexcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,改用easyexcel可以降低到

    2024年02月11日
    浏览(49)
  • EasyExcel入门介绍及工具类,网络下载excel

    前言:在这里分享自己第一次使用EasyExcel并且编写工具类,且在接口中支持excel文件下载的一系列流程,包含所有前后端(JS+JAVA)完整代码,可以根据自己需要自行提取,仅供参考。 一.引入EasyExcel依赖 二.自定义创建一个实体类,如下,这里使用了lombok 其中各个注解功能如

    2024年02月12日
    浏览(58)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包