EasyExcel入门(最简单的读)

官网:EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel (alibaba.com)

因为暂时项目没有用到,所以不急,知道了这个技术。就想着学着用一下!

最简单的读

 先看官方文档给的用法和解释!!!

导入依赖

        <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.2</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.70</version></dependency>

创建实体类

 自己准备一个Excel表格。

@Data
public class DemoData {private String name;private String sex;private String age;
}

测试

官方提供了4种写法

写法一:

final String fileName = "C:\\Users\\gong'chao\\Desktop\\58_com_resumes_bj.xls";/*** 最简单的读 - 01*/@Testvoid readExcel01(){AtomicInteger i = new AtomicInteger();EasyExcel.read(fileName, DemoData.class, new PageReadListener<DemoData>(dataList -> {for (DemoData demoData : dataList) {System.out.println("读取到一条数据" + JSON.toJSONString(demoData));i.getAndIncrement();}// 输出集合长度System.err.println(dataList.size());})).sheet().doRead();// 输出总行数System.out.println(i);}

点击PageReadListener查看源码:

 默认是一行一行读取。然后可以再点进ListUtils中查看,可以知道,一行一行的将数据存进集合中,当长度到100时重新new一个集合,则原来的集合对象不被引用交给垃圾回收。这就是 Easy Excel 处理大文件内存溢出的一种方式吧。

---   个人理解

然后可以看出实体类映射的三个字段输出的值不匹配。按照官网给出的注解:

@Data
public class DemoData {@ExcelProperty(value = "姓名")private String name;@ExcelProperty(value = "性别")private String sex;@ExcelProperty(index = 5)private String age;
}

可以指定列名,也可以指定下标。这样就正确映射了

写法二:内部类

    /*** 最简单的读 - 02*/@Testvoid readExcel02(){EasyExcel.read(fileName, DemoData.class, new ReadListener<DemoData>(){// 单次缓存的数量public static int BATCH_COUNT = 200;// 临时存储private List<DemoData> cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);@Overridepublic void invoke(DemoData data, AnalysisContext context) {cachedDataList.add(data);if(cachedDataList.size() >= BATCH_COUNT) {System.err.println(cachedDataList.size());System.err.println("已保存至数据库\n已完成清理 list");cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);}}@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {System.err.println("已将剩余数据保存至数据库");}}).sheet().doRead();}

写法三:外部类

定义一个类

public class read03 implements ReadListener<DemoData> {// 单次缓存的数量public static int BATCH_COUNT = 200;// 临时存储private List<DemoData> cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);public void invoke(DemoData data, AnalysisContext context) {cachedDataList.add(data);if(cachedDataList.size() >= BATCH_COUNT) {System.err.println(cachedDataList.size());System.err.println("已保存至数据库\n已完成清理 list");cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);}}public void doAfterAllAnalysed(AnalysisContext context) {System.err.println("已将剩余数据保存至数据库");}
}
    /*** 最简单的读 - 03*/@Testvoid readExcel03(){EasyExcel.read(fileName, DemoData.class, new read03()).sheet().doRead();}

写法四:

   /*** 最简单的读 - 04*/@Testvoid readExcel04(){try (ExcelReader excelReader = EasyExcel.read(fileName, DemoData.class, new read03()).build()) {// 构建一个sheet 这里可以指定名字或者noReadSheet readSheet1 = EasyExcel.readSheet(0).sheetName("员工表").build();ReadSheet readSheet2 = EasyExcel.readSheet(1).sheetName("请假表").build();System.out.println(readSheet1.toString());System.out.println(readSheet2.toString());// 读取一个sheetexcelReader.read(readSheet1);excelReader.read(readSheet2);}}

写法四中可以通过下标指定工作表和相应的名称。 

总结

之后真正要用EasyExcel技术时再研究其他用法,之后再更新!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/109561.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

30天入门Python(基础篇)——第2天:Python安装(保姆级)与IDE的认识与选择+详细安装教程

文章目录 专栏导读上一节课回顾1、Python解释器的安装查看各个版本的Python解释器①、ok,双击安装②、这里我们选择【自定义】安装&#xff0c; 下面的【将Python添加在环境变量】大家一定要打个勾③、点击【Next】进行下一步④、这里不建议安装在C盘, 点击【Browse】我在F盘创…

【DevOps系列】Docker数据卷(volume)详解

【DevOps系列】Docker数据卷&#xff08;volume&#xff09;详解 文章目录 【DevOps系列】Docker数据卷&#xff08;volume&#xff09;详解一、概述二、数据卷三、为什么使用数据卷volume数据卷的作用&#xff1a;数据卷的特点&#xff1a; 四、数据卷volume基本操作4.1 创建数…

小程序中如何查看指定会员的付款记录

在小程序中&#xff0c;我们可以通过一些简单的步骤来查看指定会员的付款记录。下面是具体的操作流程&#xff1a; 1. 找到指定的会员卡。在管理员后台->会员管理处&#xff0c;找到需要查看付款记录的会员卡。也支持对会员卡按卡号、手机号和等级进行搜索。 2. 查看会员卡…

测试平台前端部署

这里写目录标题 一、前端代码打包1、打包命令2、打包完成后,将dist文件夹拷贝到nginx文件夹中3、重新编写default.conf4、将之前启动的容器进行停止并且删除,再重新创建容器5、制作Dockerfile二、编写Dockerfile一、前端代码打包 1、打包命令 npm run build2、打包完成后,…

【C语言】指针和数组笔试题解析

指针是C语言的灵魂&#xff0c;他的玩法多种多样&#xff0c;这篇文章带来指针的笔试题详解&#xff0c;可以帮助我们更好的理解与巩固指针的知识 目录 预备知识&#xff1a;题目&#xff1a; 题目比较多&#xff0c;但切记戒骄戒躁&#xff0c;保持空杯心态&#xff0c;相信看…

高级深入--day23

处理给规范的文字 处理的大多数文字最好都是比较干净、格式规范的。格式规范的文字通常可以满足一些需求&#xff0c;通常格式规范的文字具有以下特点: 使用一个标准字体(不包含手写体、草书,或者十分“花哨的”字体)即使被复印或拍照&#xff0c;字体还是很清晰&#xff0c;…

OpenCV_CUDA_VS编译安装

一、OpenCV 我这里是下载的OpenCV4.5.4&#xff0c;但是不知道到在vs里面build时一直报错&#xff0c;后面换了4.7.0的版本测试&#xff0c;安装成功。 Release OpenCV 4.5.4 opencv/opencv GitHub 这个里面有官方预编译好的OpenCV库&#xff0c;可以直接食用。 扩展包&am…

ora.ai:基于GPT4的自定义AI聊天机器人平台

【产品介绍】​ 名称​ ora.ai​ 具体描述​ ora.ai是一个让你在几分钟内创建自定义AI聊天机器人的网站&#xff0c;你可以在ora.ai上使用超过35万个由用户创建的AI人物&#xff0c;探索、混合和互动。你可以轻松地生成视觉效果&#xff0c;比如你最喜欢的城市的图…

JavaScript中的Generator函数及其使用方式

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ Generator函数⭐ 创建Generator函数⭐ 调用Generator函数⭐ Generator函数的应用1. 异步编程2. 生成器&#xff08;Generator&#xff09; ⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧…

14. 线性代数 - 线性方程组

文章目录 线性方程组矩阵行列式全排列和逆序数N阶行列式(非)齐次线性方程Hi,大家好。我是茶桁。 结束了「微积分」部分的学习之后我们稍作休整,今天正式开始另外一部分:「线性代数」的学习。小伙伴们放松完回来要开始紧张起来了。 我们之前说过,不管是哪一个工程学科,根…

pytorch安装(windows)

1. torch 简介 torch总共分为两个版本&#xff0c;GPU版和CPU版&#xff0c;CPU版安装非常简单&#xff0c;直接pip install 安装即可&#xff0c;在此详细介绍 GPU 版的安装方式。 GPU 版安装需要注意以下几个地方&#xff0c;需要进行匹配才能安装上&#xff0c;否则即便安…

HTTP协议的基本概念与理解!

一、什么是HTTP协议 HTTP&#xff08;超文本传输协议&#xff09;是一个基于请求与响应&#xff0c;无状态的&#xff0c;应用层的协议&#xff0c;常基于TCP/IP协议传输数据&#xff0c;互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷…