当前位置: 首页 > news >正文

SpringBoot整合EasyExcel

springboot整合easyExcel的全流程,跟着做就能出来。对项目没有侵入要求。0侵入,可插拔

依赖

   <!--操作Excel依赖--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.1</version></dependency>

配置文件没有,不用操心这个

准备工作

一张excel表+一个实体类

@Data
@ColumnWidth(20)
public class area {@ExcelProperty(value = "id",index = 0)private int id;@ExcelProperty(value = "姓名",index = 1)private String name;
}

 读excel的流程之 创建

AnalysisEventListener监听器,读到数据,封装成area对象后会触发这个invoke方法。
@Slf4j
public class areaReadListener extends AnalysisEventListener<area> {// 每读一次,会调用该invoke方法一次,就是想对获取到的数据进行什么操作@Overridepublic void invoke(area data, AnalysisContext context) {System.out.println("data = " + data);log.info(data + "保存成功");}// 全部读完之后,会调用该方法(这个暂时用不到)@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {// TODO......}
}

开始读文件

  @Testpublic void test05() {/*** Build excel the read  构建一个读的工作簿** @param pathName  读文件的路径*            File path to read.* @param head  每一行数据存储的到的实体类的类型的class*            Annotate the class for configuration information.* @param readListener  监听器 没读一行内容都会调用该对象的invoke,在invoke可以操作使用读取到的数据*            Read listener.* @return Excel reader builder.*/
//        获取工作簿对象						excel文件位置   最后一个参数是监听器类ExcelReaderBuilder readWorkBook = EasyExcel.read("D:\\B-project\\springboot-mybatis\\src\\main\\java\\com\\example\\springmybatis\\area.xlsx", area.class, new areaReadListener());
//        获取工作表对象ExcelReaderSheetBuilder sheet = readWorkBook.sheet();
//        读取表中的内容sheet.doRead();}

开始写文件

getdata 方法生成数据,
sheet.doWrite(areaList); 写入方法填入数据集合,完成写入
   public static List<area> getdata() {ArrayList<area> list = new ArrayList<>();for (int i = 0; i < 10; i++) {area area = new area();area.setId(i);area.setName("测试"+i);list.add(area);}return list;}@Testpublic void test02(){ExcelWriterBuilder writeWorkBook = EasyExcel.write("D:\\B-project\\springboot-mybatis\\src\\main\\java\\com\\example\\springmybatis\\area.xlsx", area.class);ExcelWriterSheetBuilder sheet = writeWorkBook.sheet();//doWrite(initData()之前提前加入的生成数据的方法。List<area> areaList = getdata();sheet.doWrite(areaList);}

相关文章:

  • 使用Java分割PDF文件
  • 速卖通发布公告,屏蔽对欧洲资质和标签不合规商品——站斧浏览器
  • ZZ038 物联网应用与服务赛题第I套
  • Python基础学习014——异常
  • java制作游戏,如何使用libgdx,入门级别教学
  • 什么是用户体验测试? 为什么很重要?
  • 五金车间中MES系统解决方案
  • C#WPF命令行参数实例
  • 配置jar包开机自启动,会在启动之后自动停止
  • TreeBERT:基于树的编程语言预训练模型。
  • 都用HTTPS了,还能被查出浏览记录?
  • Python学习-shutil模块和OS模块学习
  • Java程序设计2023-第六次上机测试
  • 前端框架Vue学习 ——(三)Vue生命周期
  • 入门 SpringCloudStream 之 RocketMq 实践全集
  • ----------
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • golang中接口赋值与方法集
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • leetcode98. Validate Binary Search Tree
  • PHP 7 修改了什么呢 -- 2
  • Redis在Web项目中的应用与实践
  • RxJS: 简单入门
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • vue自定义指令实现v-tap插件
  • 电商搜索引擎的架构设计和性能优化
  • 分享几个不错的工具
  • 区块链将重新定义世界
  • 如何优雅地使用 Sublime Text
  • 移动端唤起键盘时取消position:fixed定位
  • Java总结 - String - 这篇请使劲喷我
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • (2)(2.10) LTM telemetry
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (汇总)os模块以及shutil模块对文件的操作
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (十一)图像的罗伯特梯度锐化
  • (原)Matlab的svmtrain和svmclassify
  • (转)socket Aio demo
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • ******之网络***——物理***
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .Net Web窗口页属性
  • .Net的C#语言取月份数值对应的MonthName值
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .NET框架设计—常被忽视的C#设计技巧
  • .NET连接数据库方式
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题
  • []T 还是 []*T, 这是一个问题
  • [AutoSar]BSW_Memory_Stack_004 创建一个简单NV block并调试
  • [BZOJ1040][P2607][ZJOI2008]骑士[树形DP+基环树]
  • [DNS网络] 网页无法打开、显示不全、加载卡顿缓慢 | 解决方案
  • [HNOI2010]BUS 公交线路