使用EasyExcel实现Excel导入导出

介绍

EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。

他能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。

快速:快速的读取excel中的数据。

简洁:映射excel和实体类,让代码变的更加简洁。

大文件:在读写大文件的时候使用磁盘做缓存,更加的节约内存。

官方文档:https://easyexcel.opensource.alibaba.com/

引入依赖

xml 复制代码
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>3.1.0</version>
</dependency>

创建实体类

java 复制代码
package com.example.study.vo.sys;

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author guochao
 * @version 1.0
 * @date 2023/10/18
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SysClassifyExcelVo {
    @ExcelProperty(value = "id",index = 0)
    private Long id;
    @ExcelProperty(value = "名称",index = 1)
    private String name;
    @ExcelProperty(value = "类型",index = 2)
    private String type;
    @ExcelProperty(value = "上级id",index = 3)
    private Long parentId;
    @ExcelProperty(value = "排序",index = 4)
    private Long sort;
}

创建监听类

java 复制代码
package com.itgc.test;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;

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

/**
 * @author guochao
 * @version 1.0
 * @date 2023/10/18
 */
public class ExcelListener<T> extends AnalysisEventListener<T> {

    private List<T> data = new ArrayList<>();

    //读取exceL内容,
    //从第二行开始读取,把每行读取内容封装到t对象里面
    @Override
    public void invoke(T t, AnalysisContext analysisContext) {
        data.add(t);
    }

    public List<T> getData(){
        return data;
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {

    }
}

使用

java 复制代码
package com.itgc.test;

import com.alibaba.excel.EasyExcel;
import com.example.study.vo.sys.SysClassifyExcelVo;

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

/**
 * @author guochao
 * @version 1.0
 * @date 2023/10/18
 */
public class EasyExcelTest {

    public static void main(String[] args) {
//        read();

        write();
    }

    //读操作
    public static void read(){
        //1 定义读取excel文件位置
        String fileName = "D://01.xlsx";
        //2 调用方法
        ExcelListener<SysClassifyExcelVo> excelListener = new ExcelListener<>();
        EasyExcel.read(fileName, SysClassifyExcelVo.class,excelListener).sheet().doRead();
        List<SysClassifyExcelVo> data = excelListener.getData();
        System.out.println(data);
    }

    //写操作
    public static void write(){
        List<SysClassifyExcelVo> list = new ArrayList<>();
        list.add(new SysClassifyExcelVo(1L,"分类1","课程",0L,0L));
        list.add(new SysClassifyExcelVo(2L,"分类1-1","课程",1L,1L));
        EasyExcel.write("D://02.xlsx",SysClassifyExcelVo.class)
                .sheet("分类数据").doWrite(list);
    }
}
相关推荐
容沁风2 分钟前
pycharm启动报错incompatible with Text-specific LCD
java·pycharm
馨谙6 分钟前
面试题----用户,组,su,su-,sudo,sudo-,nologin shell
java·前端·数据库
青w韵19 分钟前
SpringBoot3.x 升级到 SpringBoot 4.x,JDK17升级到JDK21
java·后端·spring
vx_bisheyuange19 分钟前
基于SpringBoot的经方药食服务平台
java·spring boot·后端·毕业设计
不坑老师41 分钟前
小工具显出大才能——不坑盒子为教育数字化转型贡献“新方案”
microsoft·word·excel·ppt·office
惊讶的猫44 分钟前
nia500总结
java·spring·mybatis
积跬步,慕至千里44 分钟前
AI平台Dataiku 支Windows系统安装过程总结
windows
奔跑吧 android1 小时前
【ubuntu24.04】【安装jdk】
java·开发语言
骆驼爱记录1 小时前
Python程序打包全攻略
自动化·word·excel·wps·新人首发
BUTCHER51 小时前
Java 启动服务时指定JVM(Java 虚拟机)的参数配置说明
java·开发语言·jvm