• 使用EasyExcel实现Excel导入导出


    介绍

    EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。
    他能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。
    快速:快速的读取excel中的数据。
    简洁:映射excel和实体类,让代码变的更加简洁。
    大文件:在读写大文件的时候使用磁盘做缓存,更加的节约内存。

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

    引入依赖

    <dependency>
        <groupId>com.alibabagroupId>
        <artifactId>easyexcelartifactId>
        <version>3.1.0version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    创建实体类

    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;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    创建监听类

    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) {
    
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    使用

    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);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
  • 相关阅读:
    Java之转换流的详细解析
    maven使用时候出现,jdk1.5的情况的解决办法
    【岛屿问题】递归
    智能清洁行业下半场的「危」与「机」
    如何修复显示器或笔记本电脑屏幕的黄色色调?这里提供几种方法
    小菜React
    【pymysql的基本使用】
    PyTorch模型导出到ONNX文件示例(LeNet-5)
    Mac 挂载 Alist网盘
    [C++网络协议] 优于select的epoll
  • 原文地址:https://blog.csdn.net/gc666888/article/details/133915843