• EasyExcel的简单读取操作


    EasyExcel的简单读取操作

    • Java领域解析、生成Excel比较有名的框架有Apache poi、 jxl等。但他们都存在一个严重的问题就是
      非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或
      者JVM频繁的full gc。
    • EasyExcel是阿里巴巴开源的一个excel处理框架, 以使用简单、节省内存著称。 EasyExcel能大大减
      少占用内存的主要原因是在解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一
      行行读取数据,逐个解析。
    • EasyExcel采用一行一行的解析模式,并将一行的解析结果以观察者的模式通知处理
      (AnalysisEventListener)。

    摘自官网

    导入依赖

    这个版本之间有个对应关系,不然会报错。

                        
                
                    org.apache.poi
                    poi
                    3.17
                
                
                
                    org.apache.poi
                    poi-ooxml
                    3.17
                
    
    		
    		
                com.alibaba
                easyexcel
                2.1.1
            
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    创建实体类

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class DemoData {
        // 设置表头名称,index表示的是编号的索引
        @ExcelProperty(value = "学生编号",index = 0)
        private Integer sno;
        @ExcelProperty(value = "学生姓名",index = 1)
        private String sname;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    用EasyExcel进行写操作测试

    /**
     * easyExcel写操作测试
     */
    @Test
    public void write() {
        String outputFile = "E:\write11.xlsx";
        EasyExcel.write(outputFile, DemoData.class).sheet("学生列表").doWrite(TestEasyExcel.getData());
    }
        private static List getData() {
            List list = new ArrayList<>();
            for (int i = 0; i < 10; i++) {
                String name = UUID.randomUUID().toString().replace("-", 					"").substring(0, 5);
                list.add(new DemoData(i, name));
            }
    
            return list;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    image-20220130201323303

    image-20220130201342830

    用EasyExcel进行读操作

    读的时候要ExcelListener监听器。

    创建ExcelListener类继承AnalysisEventListener带上excel表格中的对象

    /**
     * Created with IntelliJ IDEA.
     * @Author: pzx
     * @Date: 2022/01/30    15:46
     * @Version:1.0
     */
    public class ExcelListener extends AnalysisEventListener {
    
        // 一行一行去读取excel中的内容(表头不会去读取)
        @Override
        public void invoke(DemoData data, AnalysisContext context) {
            System.out.println("********" + data);
        }
    
    
        // 读取表头中的内容
        @Override
        public void invokeHeadMap(Map headMap, AnalysisContext context) {
    
            System.out.println("表头	" + headMap);
        }
    
        // 读取完成之后做的内容
        @Override
        public void doAfterAllAnalysed(AnalysisContext context) {
    
        }
    
    }
    
    • 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

    代码测试

    /**
     * easyExcel读操作测试
     */
    @Test
    public void read() {
        String outputFile = "E:\write11.xlsx";
    	// 加上继承了AnalysisEventListener类的监听器
        ExcelListener excelListener = new ExcelListener();
        EasyExcel.read(outputFile,DemoData.class, excelListener).sheet().doRead();
    
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    image-20220130201850712

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    MYSQL数据库(64位)详细安装
    软件设计师考试学习2
    Dubbo(二):Dubbo 2.x 基础配置 Xml 方式、注解方式 和 高级特性
    Coremail邮件安全网关:双一流高校背后的邮件安全专家
    时序预测 | MATLAB实现CNN-GRU卷积门控循环单元时间序列预测(风电功率预测)
    什么是 Infamous Skullz NFT 系列?
    猿创征文|计算机专业硕博研究生提高效率的10款科研工具
    03-QNX高可用框架HAM研究(转)
    老徐和阿珍的故事:强引用、软引用、弱引用、虚引用,傻傻分不清楚
    Spring @ComponentScan 自定义扫描规则
  • 原文地址:https://blog.csdn.net/m0_67393039/article/details/126082730