笔者之前一直使用POI读写Excel文件,最近有个需求需要读取大概80万行数据的Excel,使用POI读取到10.2万行左右就卡死不动了,而且CPU占用直接拉满到100%,内存占用也很高。

查找资料后,发现POI提供了读取大量数据的方法,但是用起来比较复杂。同时看到有人提到用EasyExcel读取Excel的速度快,资源占用少。于是换成EasyExcel去读取那个80万行数据的Excel,发现读取速度确实很快,CPU和内存占用也很少。

然而EasyExcel的官方文档中,最简单的读写代码都是默认与数据库有交互,写了一些分页读写数据库的代码,还是不够简洁。所以个人参考EasyExcel的官方文档,写了一个更加简洁、清晰的,使用EasyExcel读取Excel的样例。


1.在pom.xml中添加POI相关依赖

        <!-- easyexcel --><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel-core</artifactId><version>3.3.2</version></dependency>

2.实体类

package com.example.study.entity;import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;import java.util.Date;@Getter
@Setter
public class StudentEntity {@ExcelProperty(value = "id", order = 1)private Integer id;@ExcelProperty(value = "生日", order = 4)@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")private Date birthday;@ExcelProperty(value = "名字", order = 2)private String name;@ExcelProperty(value = "性别", order = 3)private String sex;
}

3.读取Excel的类

package com.example.study.common;import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.fastjson.JSON;
import com.example.study.entity.StudentEntity;
import lombok.extern.slf4j.Slf4j;import java.util.ArrayList;
import java.util.List;@Slf4j
public class EasyExcelDemo {public static void main(String[] args) {String readExcel = "F:\\tmp\\students.xlsx";String writeExcel = "F:\\tmp\\students-write.xlsx";List<StudentEntity> list = read(readExcel);write(writeExcel, list);}private static void write(String fileName, List<StudentEntity> list) {EasyExcel.write(fileName).head(StudentEntity.class).sheet("EasyExcel Writed 1").doWrite(list);}private static List<StudentEntity> read(String excel) {List<StudentEntity> list = new ArrayList<>();EasyExcel.read(excel).head(StudentEntity.class).sheet(1).registerReadListener(new ReadListener<StudentEntity>() {@Overridepublic void invoke(StudentEntity entity, AnalysisContext analysisContext) {list.add(entity);System.out.println("每读取到一行数据就会执行该方法:" + JSON.toJSONString(entity));}@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {System.out.println("所有数据读取完成后执行该方法");}}).doRead();return list;}
}

使用EasyExcel读写Excel文件相关推荐

  1. Alibaba开源工具EasyExcel读写Excel文件

    前言 工作中使用 excel 表格处理数据是很常见的操作,经常会使用 excel 文件来导入数据或者导出数据,是不是脑海中已经思考有哪些处理excel框架? 小编之前呢就知道Java 解析.生成 Ex ...

  2. 阿里EasyExcel读写excel文件的基本使用

    EasyExcel读写excel文件 1.EasyExcel简介 2.对excel的写操作 1.1 创建一个普通的maven项目并引入相关依赖 1.2 创建实体类 1.3 实现写操作 1.3.1 创建 ...

  3. 使用阿里 EasyExcel 读写 Excel 文件

    首先 pom.xml 引入依赖,EasyExcel 版本更新快,不同版本 API 均有不同,有些已经废弃. <dependency><groupId>com.alibaba&l ...

  4. 使用easyexcel读写Excel

    title: "使用easyexcel读写Excel" url: "https://wsk1103.github.io/" tags: Java 学习笔记 JA ...

  5. EasyExcel实现Excel文件导入导出

    1 EasyExcel简介 EasyExcel是一个基于Java的简单.省内存的读写Excel的开源项目.在尽可能节约内存的情况下支持读写百M的Excel. github地址: https://git ...

  6. python怎么读excelsheet_python3 excle(python怎么读写excel文件)

    python读取已经打开的3个word和excle文件的路径 用 win32com 操控 word和Excel就可以实现 咋样把python写入excle中 # 需安装 xlrd-0.9.2 和 xl ...

  7. python pandas读取excel-Python使用Pandas读写EXCEL文件教程

    欢迎,来自IP地址为:211.103.135.163 的朋友 教程开始之前,我们需要首先了解一下什么是Excel,这有助于理解之后教程中的内容. 什么是Excel Excel  是微软出品的和款办公软 ...

  8. python处理excel教程实例-python 读写excel文件操作示例【附源码下载】

    本文实例讲述了python 读写excel文件操作.分享给大家供大家参考,具体如下: 对excel文件的操作,python有第三方的工具包支持,xlutils,在这个工具包中包含了xlrd,xlwt等 ...

  9. python导入excel文件-python使用xlrd模块读写Excel文件的方法

    本文实例讲述了python使用xlrd模块读写Excel文件的方法.分享给大家供大家参考.具体如下: 一.安装xlrd模块 到python官网下载http://pypi.python.org/pypi ...

最新文章

  1. matlab计算位温,大气物理学复习资料
  2. 3D建模突然火起来了之后应该如何面对?
  3. python利用pandas存数据并且展示csv
  4. 【图像处理】MATLAB:图像压缩
  5. 一主多备几影响 oracle,1个主库配置多个备库的问题
  6. pads2007 LISENCE 报错解决方案
  7. 2021“华为杯”第十八届中国研究生数学建模竞赛有感
  8. spring整合redis菜鸟版
  9. java时间格式转换
  10. Mac pro 中Word-PPT(office)常用快捷键--补充
  11. 用过企业微信APP 后,微信接收不到消息,解决方案
  12. OpenGL学习笔记:GLAD和第一个窗口
  13. An invalid domain was specified for this cookie
  14. 品《阿里巴巴大数据实践-大数据之路》一书(下)
  15. 服务器的1U、2U、4U是指什么?
  16. ICCV2021|你以为这是一个填色模型?其实我是检索模型!
  17. HTML5 + CSS +JavaScript基本标签的使用(入门
  18. 收藏了,挺有意思的生成太极图
  19. 19年暑假实习,我霸面了鹅厂两次。
  20. 【计算机毕业设计】java基于ssm校园快递代领系统

热门文章

  1. 终于拿到美团的实习offer了,啃了一个月的面经没白费啊
  2. mysql查看主主信息_MySQL主主
  3. 有12个球,其中11个重量相等,只有1个不一样,不知是轻还是重.用天平秤三次,找出这个球.
  4. 经销商融资管理系统-围绕核心企业,快速打造供应链金融生态圈
  5. 小米盒子连接老式电脑显示器(VGA接口)
  6. C++之xlsx文件操作之写操作
  7. 脑电图入门知识+大脑脑区功能说明
  8. php 的一元二次方程_PHP实现二元一次方程式的求解
  9. SQL查询众数与中位数
  10. Matroska 一种新的多媒体封装格式