使用EasyExcel读写Excel文件
笔者之前一直使用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文件相关推荐
- Alibaba开源工具EasyExcel读写Excel文件
前言 工作中使用 excel 表格处理数据是很常见的操作,经常会使用 excel 文件来导入数据或者导出数据,是不是脑海中已经思考有哪些处理excel框架? 小编之前呢就知道Java 解析.生成 Ex ...
- 阿里EasyExcel读写excel文件的基本使用
EasyExcel读写excel文件 1.EasyExcel简介 2.对excel的写操作 1.1 创建一个普通的maven项目并引入相关依赖 1.2 创建实体类 1.3 实现写操作 1.3.1 创建 ...
- 使用阿里 EasyExcel 读写 Excel 文件
首先 pom.xml 引入依赖,EasyExcel 版本更新快,不同版本 API 均有不同,有些已经废弃. <dependency><groupId>com.alibaba&l ...
- 使用easyexcel读写Excel
title: "使用easyexcel读写Excel" url: "https://wsk1103.github.io/" tags: Java 学习笔记 JA ...
- EasyExcel实现Excel文件导入导出
1 EasyExcel简介 EasyExcel是一个基于Java的简单.省内存的读写Excel的开源项目.在尽可能节约内存的情况下支持读写百M的Excel. github地址: https://git ...
- python怎么读excelsheet_python3 excle(python怎么读写excel文件)
python读取已经打开的3个word和excle文件的路径 用 win32com 操控 word和Excel就可以实现 咋样把python写入excle中 # 需安装 xlrd-0.9.2 和 xl ...
- python pandas读取excel-Python使用Pandas读写EXCEL文件教程
欢迎,来自IP地址为:211.103.135.163 的朋友 教程开始之前,我们需要首先了解一下什么是Excel,这有助于理解之后教程中的内容. 什么是Excel Excel 是微软出品的和款办公软 ...
- python处理excel教程实例-python 读写excel文件操作示例【附源码下载】
本文实例讲述了python 读写excel文件操作.分享给大家供大家参考,具体如下: 对excel文件的操作,python有第三方的工具包支持,xlutils,在这个工具包中包含了xlrd,xlwt等 ...
- python导入excel文件-python使用xlrd模块读写Excel文件的方法
本文实例讲述了python使用xlrd模块读写Excel文件的方法.分享给大家供大家参考.具体如下: 一.安装xlrd模块 到python官网下载http://pypi.python.org/pypi ...
最新文章
- matlab计算位温,大气物理学复习资料
- 3D建模突然火起来了之后应该如何面对?
- python利用pandas存数据并且展示csv
- 【图像处理】MATLAB:图像压缩
- 一主多备几影响 oracle,1个主库配置多个备库的问题
- pads2007 LISENCE 报错解决方案
- 2021“华为杯”第十八届中国研究生数学建模竞赛有感
- spring整合redis菜鸟版
- java时间格式转换
- Mac pro 中Word-PPT(office)常用快捷键--补充
- 用过企业微信APP 后,微信接收不到消息,解决方案
- OpenGL学习笔记:GLAD和第一个窗口
- An invalid domain was specified for this cookie
- 品《阿里巴巴大数据实践-大数据之路》一书(下)
- 服务器的1U、2U、4U是指什么?
- ICCV2021|你以为这是一个填色模型?其实我是检索模型!
- HTML5 + CSS +JavaScript基本标签的使用(入门
- 收藏了,挺有意思的生成太极图
- 19年暑假实习,我霸面了鹅厂两次。
- 【计算机毕业设计】java基于ssm校园快递代领系统
热门文章
- 终于拿到美团的实习offer了,啃了一个月的面经没白费啊
- mysql查看主主信息_MySQL主主
- 有12个球,其中11个重量相等,只有1个不一样,不知是轻还是重.用天平秤三次,找出这个球.
- 经销商融资管理系统-围绕核心企业,快速打造供应链金融生态圈
- 小米盒子连接老式电脑显示器(VGA接口)
- C++之xlsx文件操作之写操作
- 脑电图入门知识+大脑脑区功能说明
- php 的一元二次方程_PHP实现二元一次方程式的求解
- SQL查询众数与中位数
- Matroska 一种新的多媒体封装格式