使用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);
    }
}
相关推荐
cui_hao_nan6 分钟前
多轮对话实现
java·语言模型
饼干ovo8 分钟前
shell编程
java·git·github
华科云商xiao徐18 分钟前
Java使用Jsoup库实现通用爬虫
java·爬虫
闲敲棋子落灯华38 分钟前
java学习笔记(三)--java包的引入、访问控制、类的继承、super关键字、重载、重写、运算符、拆箱
java·后端
程序员岳焱40 分钟前
Java 使用 Spring AI 的 10 个实用技巧
java·后端·程序员
Bug改不动了44 分钟前
迁移达梦数据库过程中,如何快速识别需要改写的Mapper SQL方法
java·mybatis
crud1 小时前
Spring Boot 使用 @Async 实现异步操作:从入门到实战,一文讲透
java·spring boot
代码小将1 小时前
java中static学习笔记
java·笔记·学习
std78791 小时前
VITA STANDARDS LIST,VITA 最新标准清单大全下载_ansi vita 2025
java·前端·javascript