当前位置: 首页 > article >正文

EasyExcel数据的导入导出

1.easyExcel简介

EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。
他能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。

EasyExcel 的主要特点如下:

1、高性能:EasyExcel 采用了异步导入导出的方式,并且底层使用 NIO 技术实现,使得其在导入导出大数据量时的性能非常高效。

2、易于使用:EasyExcel 提供了简单易用的 API,用户可以通过少量的代码即可实现复杂的 Excel 导入导出操作。

3、增强的功能:EasyExcel 支持多种格式的 Excel 文件导入导出,同时还提供了诸如合并单元格、数据校验、自定义样式等增强的功能。

4、可扩展性好:EasyExcel 具有良好的扩展性,用户可以通过自定义 Converter 对自定义类型进行转换,或者通过继承 EasyExcelListener 来自定义监听器实现更加灵活的需求。

easyexcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,改用easyexcel可以降低到几M,并且再大的excel也不会出现内存溢出;03版依赖POI的sax模式,在上层做了模型转换的封装,让使用者更加简单方便

2.创建一个maven项目

导入依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.1</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

2025年1月最新版本的easyExcel依赖

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

定义一个实体类来封装每一行的数据

@Data
public class ExcelDemo {

	@ExcelProperty(value = "id" ,index = 0)
	private Long id;

	@ExcelProperty(value = "名称" ,index = 1)
	private String name;

	@ExcelProperty(value = "图片url" ,index = 2)
	private String imageUrl ;

	@ExcelProperty(value = "上级id" ,index = 3)
	private Long parentId;

	@ExcelProperty(value = "状态" ,index = 4)
	private Integer status;

	@ExcelProperty(value = "排序" ,index = 5)
	private Integer orderNum;


public CategoryExcelVo(Long id, String name, String imageUrl, Long parentId, Integer                 status, Integer orderNum) {
		this.id = id;
		this.name = name;
		this.imageUrl = imageUrl;
		this.parentId = parentId;
		this.status = status;
		this.orderNum = orderNum;
	}
}

定义一个监听器,监听解析到的数据

public class ExcelListener<T> extends AnalysisEventListener<T> {
    
    //可以通过实例获取该值
    private List<T> datas = new ArrayList<>();

    @Override
    public void invoke(T o, AnalysisContext analysisContext) {  // 每解析一行数据就会调用一次该方法
        datas.add(o);//数据存储到list,供批量处理,或后续自己业务逻辑处理。
    }

    public List<T> getDatas() {
        return datas;
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        // excel解析完毕以后需要执行的代码
    }
    
}	

编写测试方法

@SpringBootTest
class DemoApplicationTests {

    @Test
    void contextLoads() {
        List<CategoryExcelVo> list = new ArrayList<>();
        list.add(new CategoryExcelVo(1L , "数码办公" , "",0L, 1, 1)) ;
        list.add(new CategoryExcelVo(11L , "华为手机" , "",1L, 1, 2)) ;
        EasyExcel.write("D://分类数据1.xlsx" , CategoryExcelVo.class).sheet("分类数据1").doWrite(list);
    }

}

去路径下查看excel文件

这样就行了


http://www.kler.cn/a/470493.html

相关文章:

  • C4D2025 win版本安装完无法打开,提示请将你的maxon App更新至最新版本,如何解决
  • patchwork++地面分割学习笔记
  • sunrays-framework(太阳射线框架搭建)
  • [开源]自动化定位建图系统
  • Flutter鸿蒙化 在鸿蒙应用中添加Flutter页面
  • 清除数字栈
  • 数据结构与算法-顺序表
  • 使用扣子实现营销获客套电机器人-工作流+多维表格+飞书机器人
  • 基于springboot的论坛管理系统
  • 【C语言程序设计——选择结构程序设计】求一元二次方程的根(头歌实践教学平台习题)【合集】
  • 【C++数据结构——图】最小生成树(头歌实践教学平台习题) 【合集】
  • html内容过长,实现向上循环滑动效果
  • 设计模式 结构型 外观模式(Facade Pattern)与 常见技术框架应用 解析
  • TCP Listen 原语:端口失衡、对称性及协议演进
  • Linux 磁盘管理命令:mkinitrd :建立要载入ramdisk 的映象文件ssm:命令行集中存储管理工具
  • 利用API接口提升电商平台用户体验的实践
  • 【HarmonyOS】鸿蒙应用实现屏幕录制详解和源码
  • 【Linux】深入理解进程信号机制:信号的产生、捕获与阻塞
  • Kafka【应用 04】Java实现筛选查询Kafka符合条件的最新数据(保证数据最新+修改map对象key的方法+获取指定数量的记录)源码分享粘贴可用
  • 生信技能69 - 使用deepvariant进行对基因组指定区域Calling SNPs/Indels
  • 机器学习经典算法——线性回归
  • Spring Boot(4)使用 IDEA 搭建 Spring Boot+MyBatis 项目全流程实战
  • 【PPTist】批注、选择窗格
  • 关于物联网的基础知识(一)
  • 容器技术思想 Docker K8S
  • 关于Java面试题大全网站无法访问的解决方案