使用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);
    }
}
相关推荐
Hi202402174 小时前
为QML程序添加启动Logo:提升用户体验
windows·qt·ui·人机交互·qml·启动logo
半旧夜夏4 小时前
【Gateway】服务调用和网关配置攻略
java·spring boot·spring cloud·gateway
yue0084 小时前
C# 求取整数的阶乘
java·开发语言·c#
可观测性用观测云4 小时前
JAVA Heap Dump 采集最佳实践
java
一 乐4 小时前
个人博客|博客app|基于Springboot+微信小程序的个人博客app系统设计与实现(源码+数据库+文档)
java·前端·数据库·spring boot·后端·小程序·论文
曹绍华4 小时前
android 线程loop
android·java·开发语言
我命由我123454 小时前
Android 开发 - Android JNI 开发关键要点
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
YG亲测源码屋5 小时前
怎么让自己的网址被百度收录(网站如何被百度收录进去)
java·百度·dubbo
风筝在晴天搁浅5 小时前
代码随想录 Q89.跳跃游戏Ⅱ
java
tryxr5 小时前
变量捕获相关内容
java·开发语言·jvm