EasyExcel
EasyExcel-简介
- 简介
- 项目搭建
- 导入依赖
- 编写测试实体类
- 编写测试类
- 测试结果
简介
Java解析、生成Excel比较有名的框架有
Apache poi
、jxl
。但他们都存在一个严重的问题就是非常的耗内存,poi
有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI
还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel
重写了poi
对07版Excel的解析,一个3M的excel用POI sax
解析依然需要100M左右内存,改用easyexcel
可以降低到几M,并且再大的excel
也不会出现内存溢出;03版依赖POI的sax模式,在上层做了模型转换的封装,让使用者更加简单方便
项目搭建
导入依赖
<!--easyExcel依赖导入-->
<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.3</version>
</dependency>
编写测试实体类
package entry;import com.alibaba.excel.annotation.ExcelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.util.Date;/*** Created by jdx on 2022/6/17 上午12:10*/
/*相当于实体类中的get set方法*/
@Data
/*相当于有参构造*/
@AllArgsConstructor
/*相当于无参构造*/
@NoArgsConstructor
public class Student {/*@ExcelProperty* 1、详相当于表头定义* 2、实体别名* */@ExcelProperty("姓名")private String name;@ExcelProperty("入学时间")private String admissionATime;@ExcelProperty("性别")private Boolean sex;@ExcelProperty("联系方式")private String contactDetails;@ExcelProperty("班级")private String className;@ExcelProperty("成绩")private String score;@ExcelProperty("邮箱")private String e_mail;
}
编写测试类
package test;import com.alibaba.excel.EasyExcel;
import org.junit.Test;
import entry.Student;import java.util.ArrayList;/*** Created by jdx on 2022/6/17 上午12:13*/
public class test {@Testpublic static void main(String[] args) {/*新建一个存放输出流对象的list*/ArrayList<Student> students = new ArrayList<Student>();/*新建一个Student对象*/Student student01 = new Student("宫本武藏","2016-03",true,"12345678911","九年级十一班","A","12345612@qq.com");Student student02 = new Student("娜可露露","2016-03",false,"12345678912","九年级十一班","A","123452336@qq.com");Student student03 = new Student("不知火舞","2016-03",false,"12345678913","九年级十一班","A","12332e456@qq.com");Student student04 = new Student("橘右京","2016-03",true,"12345678914","九年级十一班","A","12ew3456@qq.com");Student student05 = new Student("孙悟空","2016-03",true,"12345678915","九年级十一班","A","12341256@qq.com");Student student06 = new Student("三藏法师","2016-03",true,"12345678916","九年级十一班","A","123432156@qq.com");Student student07 = new Student("猪八戒","2016-03",true,"12345678917","九年级十一班","A","12342156@qq.com");Student student08 = new Student("耀","2016-03",true,"12345678918","九年级十一班","A","12324456@qq.com");Student student09 = new Student("李逍遥","2016-03",true,"12345678919","九年级十一班","A","123434456@qq.com");Student student10 = new Student("赵琳儿","2016-03",false,"12345678910","九年级十一班","A","12343456@qq.com");Student student11 = new Student("李白a","2016-03",true,"12345678922","九年级十一班","A","123343456@qq.com");/*添加数据*/students.add(student01);students.add(student02);students.add(student03);students.add(student04);students.add(student05);students.add(student06);students.add(student07);students.add(student08);students.add(student09);students.add(student10);students.add(student11);/*定义文件名称*/String fileName = "在校花名册.xlsx";/*测试输出方式* 1、.write 方法参数* 文件名称* 构造对象* 2、.sheet 方法参数* sheet名称* 3、.doWrite 方法* 传入输出流对象*/EasyExcel.write(fileName,Student.class).sheet("ceshi").doWrite(students);}}
测试结果
至此项目搭建成功以及简单测试均以实现。