【在线教育】EasyExcel入门(一)

简介: EasyExcel入门

1. EasyExcel 入门


1.1 EasyExcel概述


EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel工具。

官网:EasyExcel(文档已经迁移) · 语雀

github地址:GitHub - alibaba/easyexcel: 快速、简洁、解决大文件内存溢出的java处理Excel工具

1.2 EasyExcel 特点


  • Java解析、生成Excel比较有名的框架有Apache poi、jxl,但他们都存在一个严重的问题就是非常的耗内存。
  • EasyExcel 重写了poi,使一个3M的excel只需要几M内存,并且再大的excel不会出现内存溢出。
  • 64M内存1分钟内读取75M(46W行25列)的Excel。

1.3 环境搭建


1.3.1 测试父项目


image.png

修改pom文件

<dependencies><!--测试--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency></dependencies>

1.3.2 测试excel项目


  • 项目名:zx-test-excel

image.png

修改pom,添加依赖<dependencies><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.1</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies>

1.4 基本操作


image.png

1.4.1 测试JavaBean


image.png

packagecom.czxy.zx.demo01;
importcom.alibaba.excel.annotation.ExcelProperty;
importlombok.Data;
importjava.util.Date;
/*** Created by liangtong.*/@DatapublicclassStudent {
@ExcelProperty("编号")
privateStringid;
@ExcelProperty("姓名")
privateStringname;
@ExcelProperty("年龄")
privateIntegerage;
@ExcelProperty("电话")
privateStringtelephone;
@ExcelProperty("邮箱")
privateStringemail;
@ExcelProperty("生日")
privateDatebrithday;
}

1.4.2 测试文件路径


packagecom.czxy.zx.demo01;
importorg.junit.jupiter.api.Test;
/*** @author 桐叔* @email liangtong@itcast.cn*/publicclassTestExcel {
/*** 获得根路径* @return*/publicStringgetPath() {
returnthis.getClass().getResource("/").getPath();
    }
@TestpublicvoidtestPath() {
// 测试文件路径Stringpath=getPath() +"student_demo.xls";
System.out.println(path);
    }
}

1.4.3 写操作


  • excel 属于 office组件一个软件
  • 存在若干版本,大体上划分2种情况,2007前的,2007年后的
  • 2003版:扩展名 xls,内容比较少,最大单元格 IV65536 ,256列(IV)
  • 2007版:扩展名 xlsx,内容较多,最大单元格 XFD1048576,16384列(XFD)
/*** 准备数据* @return*/privateList<Student>getData(){
List<Student>list=newArrayList<Student>();
for(inti=0 ; i<10 ; i++){
Studentstudent=newStudent();
student.setId("stu"+i);
student.setName("wang"+i);
student.setAge( 18+i );
student.setTelephone("1361234"+i);
student.setEmail("wang"+i+"@czxy.com");
student.setBrithday(newDate());
list.add(student);
        }
returnlist;
    }
@TestpublicvoidtestWrite(){
Stringfile=getPath() +"student_demo.xls";
//EasyExcel.write(位置,对象).sheet("表名").doWrite(数据);EasyExcel.write(file,Student.class).sheet("班级").doWrite(getData());
    }

1.4.3 读操作


  • 处理类:
  • 处理类需要实现 AnalysisEventListener 接口
packagecom.czxy.zx.demo01;
importcom.alibaba.excel.context.AnalysisContext;
importcom.alibaba.excel.event.AnalysisEventListener;
importcom.czxy.zx.domain.Student;
/*** @author 桐叔* @email liangtong@itcast.cn*/publicclassStudentListenerextendsAnalysisEventListener<Student> {
@Overridepublicvoidinvoke(Studentstudent, AnalysisContextanalysisContext) {
System.out.println(student);
    }
@OverridepublicvoiddoAfterAllAnalysed(AnalysisContextanalysisContext) {
System.out.println("解析完成");
    }
}
测试@TestpublicvoidtestRead(){
Stringfile=getPath() +"student_demo.xls";
//EasyExcel.read(文件, 封装对象, 处理类).sheet("表").doRead();EasyExcel.read(file, Student.class, newStudentListener()).sheet("班级").doRead();
    }
相关文章
|
4月前
|
SQL Java 数据库连接
Spring Boot联手MyBatis,打造开发利器:从入门到精通,实战教程带你飞越编程高峰!
【8月更文挑战第29天】Spring Boot与MyBatis分别是Java快速开发和持久层框架的优秀代表。本文通过整合Spring Boot与MyBatis,展示了如何在项目中添加相关依赖、配置数据源及MyBatis,并通过实战示例介绍了实体类、Mapper接口及Controller的创建过程。通过本文,你将学会如何利用这两款工具提高开发效率,实现数据的增删查改等复杂操作,为实际项目开发提供有力支持。
202 0
|
7月前
|
存储 物联网 大数据
Java+BS +saas云HIS系统源码SpringBoot+itext + POI + ureport2数字化医院系统源码
医院云HIS系统是一种运用云计算、大数据、物联网等新兴信息技术的业务和技术平台。它按照现代医疗卫生管理要求,在特定区域内以数字化形式收集、存储、传递和处理医疗卫生行业的数据。通过云HIS系统,可以实现区域内医疗卫生信息资源的集中统管、统一调配、按需服务,为居民、医疗机构、卫生管理机关和其他机构提供云服务。
84 1
|
7月前
|
Java 关系型数据库 MySQL
基于SpringBoot的冬奥会科普平台
基于SpringBoot的冬奥会科普平台
|
存储 NoSQL Oracle
SpringBoot资源整合——SpringData(课时十八)
SpringBoot资源整合——SpringData(课时十八)
117 0
|
数据可视化 Java API
谷粒学苑项目实战(三):整合Swagger2
前后端分离开发模式中,api文档是最好的沟通方式。 Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
142 0
谷粒学苑项目实战(三):整合Swagger2
|
JSON 前端开发 easyexcel
这年头谁还用POI,快来使用国人写的EasyExcel吧,SpringBoot+EasyExcel的快速入门
这年头谁还用POI,快来使用国人写的EasyExcel吧,SpringBoot+EasyExcel的快速入门
这年头谁还用POI,快来使用国人写的EasyExcel吧,SpringBoot+EasyExcel的快速入门
|
SQL Java API
SpringBoot快速掌握 - 核心技术|学习笔记
快速学习SpringBoot快速掌握 - 核心技术
SpringBoot快速掌握 - 核心技术|学习笔记
|
缓存 easyexcel 数据库
|
前端开发 JavaScript Java
基于springboot的疫情网课教学平台
该系统基于springboot技术,采用Mysql数据库,选题新颖,页面美观,功能全面,数据库表结构适量,具有完整的业务逻辑,适合作为毕业设计、课程设计、数据库大作业。系统主要分为2个角色,分别为用户和管理员。
基于springboot的疫情网课教学平台
|
Java API Apache
下一篇
无影云桌面