技术点-EasyExcel 实现写操作 | 学习笔记

简介: 快速学习技术点-EasyExcel 实现写操作

开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot)技术点-EasyExcel 实现写操作学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/667/detail/11355


技术点-EasyExcel 实现写操作


内容介绍

一、EasyExcel 特点

二、用 EasyExcel 进行写的操作


一、EasyExcel 特点

1.Java 领域解析、 生成 Excel 比较有名的框架有 Apache poi、 jxl 等。

但他们都存在一 个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后定会 OOM 或者 JVM 频繁的 Easy excel。

2.EasyExcel 是阿里巴巴开源的一个excel处理框架,以使用简单、节省内存著称。

EasyExcel 能大大减少占用内存的主 要原因是在解析 Excel 时没有将文件数据一一次性全部加载到内存中,而是从磁盘上行行读取数据,逐个解析。

3.EasyExcel 采用一 行行的解析模式,并将一行的解析结果以观察者的模式通知处理 ( AnalysisEventListener).

4.JAVA 解析 Excel 工具 easyexcel
Java 解析、生成 Excel 比较有名的框架有 Apache poi、jxd. 但他们都存在-一个严重的问题就是非常的耗内存,po 有一套 SAX 模式的 API 可以一定程度的解决一些内存溢出的问题,但 POI 还是有一 些缺陷,比如07版 Excel 解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。

easyexcel 重写 了 poi 对07版 Excel 的解析,能够原本一个3M 的 excel 用 POI sax 依然需要100M 左右内存降低到几 M,并且再大的 excel 不会出现内存溢出,03版依赖 POI 的 sax 模式。在上层做了模型转换的封装,让使用者更加简单方便。

5.Excel 是阿里巴巴提供一个针对Excel一个简单高效的一个框架,用它可以用最简单、最高效的实现对 Excel 的读和写操作。


二、用 EasyExcel 进行写的操作

创建一个普通的 maven 项目

项目名 : excel-easydemo

pom 中引入 xmI 相关依赖

<dependencies >

<dependency>

<groupId>com. alibaba</groupld>

<artifactId>easyexcel</artifactId>

<version>2. 1.1</version>

</dependency>

</dependencles>

第一步引入 EasyExcel 依赖

<dependencies >

<dependency>

<groupId>com. alibaba</groupld>

<artifactId>easyexcel</artifactId>

<version>2. 1.1</version>

</dependency>

</dependencles>

再需要 poi 依赖

< dependency>

< groupId>org. apache. poi </groupId>

<artifactId>poi</artifactld>

< dependency>

<dependency>

<groupId>org. apache. poi </groupId>

<artifactld>poi-ooxml </artifactId>

</ dependency>

引入时需要 poi.version>3.17</point.version>

第二步做创建一个实体类和easyexcel对应,这一类要和sales里边数据要对应上

image.png

比如,一个叫一级分类,一个叫二级分类,

@Data

public class DemoData

//设置excel表头名称

@ExcelProperty("学生编号")

private Integer sno;

@ExcelProperty("学生姓名")

private String sname;

第三步使用具体代码部分

package com. atguigu. demo. excel ;

import com alibaba. excel. Easy Excel;

public class TestEasyExcel {

public static void main(String[] args) {

//实现excel写的操作

//1设置导人文件夹地址和exce1文件名称

String filename = "F:\\write. xlsx":

//2调用 easyexcel 里面的方法实现写操作

package com. atguigu. demo. excel ;

import com alibaba. excel. Easy Excel;

public class TestEasyExcel {

public static void main(String[] args) {

//实现 excel 写的操作

//1设置导人文件夹地址和exce1文件名称

String filename = "F:\\write. xlsx":

//2调用 easyexcel 里面的方法实现写操作

//write方法两个参数:第一一个参数文件路径名称, 第二个参数实体类class

EasyExcel. write(filename, DemoData. class)EasyExcel. urite(filename, DemoData class). sheet( sheetName: " 学生列表" ).doWrite(getData()):

//创建方法返回list集合

private static List DemoData> getData<>()

List<DemoData> list . new ArrayList<>():

for (int i = 0; I < 10: i++)

DemoData data = new DemoData():

data. setSno(i) ;

data. setSname ("lucy"+i) :

list. add(data) :

}

return list:

这个 Excel 是写的一个操作,也就是说最终能生成一个 Excel 文件,并且里边会有内容。

首先设置一下,写入的文件夹的地址和Excel文件的名称。

比如一个 file name。Name 咱就等于它路径,那路径比如现在就写到这个 ABC1盘,就写到 F 盘,F 盘里面就写着路径,然后加上这个文件,比如就叫这个就叫 right。

第二步就是要用这一个词。XL 里边写错直接调方法就可以。这个方法在 right 中的两个参数,第一个是文件流,或者说文件名称,然后第二个是里面这个 class,也就是写到那个实体类的。

Write 方法中两个参数,第一个参数是以文件的路径名称,然后第二个参数是我们实体类的class,这个方法做完之后并没有写完,因为在一个 Excel 里边来看具体的。

向date中把数据一次放进去,它就两个值,一个是 s no name。都放下,这两只 S内部。

然后里面的值为了区分 ISO,里面就放了一个 APP,然后在 S 里面,比如说一个叫这个 Lucy,加上一个,让他每次都不要都传之后,最后再把它就放到例子里面去。

就这么一个构建,最后把它做一个反馈,这个例子集合里面放十个立项的一个循环,依次放就可以了,最后给他们,这个方法就最终完成了。最后把这效果再来试一下,看一下效果能做到什么事。

把这个服务器现在就给冻掉,直接启动,直接运行,运行之后,它在F盘里面建个文件夹,叫 right 这个名字,然后在文中有咱们刚才放的这些纸,因为我循环十次,最终里边有循环之后的十条数据。

实现最终的添加操作(写法一 )

public static vold main(String[] args) throws Exception {

//写法1

String fileName = "F:\\11.xlsx";

//这里需要指定写用哪个class去写,然后写到第一个sheet名字为模板然后文件流会自动关闭

//如果这里想使用03则传入excelType参数即可

EasyExcel .writer(filenameDemoData.class).sheet("写入方法 一")ddwrite(data());

}

实现最终的添加操作(写法二)

public static vold main(String[] args) throws Exception {

//写法2,方法二需要手动关闭流

String fileName = "F:\112. xlsx";

//这里需要指定写用那个class去写Excelwriter excelwriter =EasyE xcel .write (fileName,DemoData.class).buil();

writeSheet writeSheet =EasyExcel .writerSheet("写入方法二"). build();

excelwriter .write(data(), writeSheet);

///千万別忘己finish会帮忙关闭流

excelwriter. finish();

第二种写法比第一种更加麻烦点,第一种方式中,写的过程中,最后它会自动关流,但是用第二种方式需要手动关闭,所以一般都用这种方式。

相关文章
|
30天前
|
Java Apache
EasyPOI操作Excel从零入门
我们不造轮子,只是轮子的搬运工。(其实最好是造轮子,造比别人好的轮子)开发中经常会遇到excel的处理,导入导出解析等等,java中比较流行的用poi,但是每次都要写大段工具类来搞定这事儿,此处推荐一个别人造好的轮子,EasyPOI封装了Apache的POI技术,实现了基本的Excel导入、导出从此不再为Excel操作头疼~
20 2
EasyPOI操作Excel从零入门
|
easyexcel Java API
Excel 高效解析工具 EasyExcel 实践
EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。
908 0
|
JSON easyexcel Java
EasyExcel的简单使用
EasyExcel的简单使用,以及如何通过postman进行导入导出功能的调试
1194 1
|
3月前
|
存储 easyexcel Java
SpringBoot整合Easyexcel操作Excel,闲暇之余,让我们学习更多
SpringBoot整合Easyexcel操作Excel,闲暇之余,让我们学习更多
105 0
|
10月前
|
XML easyexcel Java
实现EasyExcel对Excel写操作
实现EasyExcel对Excel写操作
|
缓存 easyexcel Java
狂神说POI,EasyExcel笔记及源码资料(一)
狂神说POI,EasyExcel笔记及源码资料(一)
799 0
狂神说POI,EasyExcel笔记及源码资料(一)
|
12月前
|
存储 easyexcel Java
springboot使用EasyExcel实现excel导出千万大数据量
# 介绍 EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。 他能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。 easyexcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,
1691 0
|
JSON 前端开发 easyexcel
这年头谁还用POI,快来使用国人写的EasyExcel吧,SpringBoot+EasyExcel的快速入门
这年头谁还用POI,快来使用国人写的EasyExcel吧,SpringBoot+EasyExcel的快速入门
这年头谁还用POI,快来使用国人写的EasyExcel吧,SpringBoot+EasyExcel的快速入门
|
存储 easyexcel 中间件
【Alibaba中间件技术系列】「EasyExcel实战案例」实战研究一下EasyExcel如何从指定文件位置进行读取数据
【Alibaba中间件技术系列】「EasyExcel实战案例」实战研究一下EasyExcel如何从指定文件位置进行读取数据
385 1

热门文章

最新文章