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

【springboot】【easyexcel】excel文件读取

目录

    • pom.xml
    • ExcelVo
    • 逐行读取并处理
    • 全部读取并处理
    • 向ExcelListener 传参

pom.xml

<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.1</version>
</dependency>

ExcelVo

字段映射

@Data
public class ExcelVo {@ExcelProperty(value = "序号", index = 0)private Integer num;@ExcelProperty(value = "工号", index = 1)private String id;@ExcelProperty(value = "姓名", index = 2)private String username;...
}

逐行读取并处理

controller:接收文件接口

@RequestMapping(value = "/upload", method = RequestMethod.POST)
public JsonResult upload(@RequestParam("file") MultipartFile file) {if (file.isEmpty()) {return false;}try {ExcelListener excelListener = new ExcelListener();EasyExcel.read(file.getInputStream(), ExcelVo.class, excelListener).sheet().doRead();return true;}catch (Exception e){}}

ExcelListener :逐行处理

@Component
public class ExcelListener extends AnalysisEventListener<ExcelVo> {public static ExcelListener excelListener; //声明对象@PostConstruct //初始化public void init() {excelListener = this;excelListener.resultService = this.resultService;}@Autowiredprivate ResultService resultService;@Overridepublic void invoke(ExcelVo excelVo, AnalysisContext analysisContext) {excelListener.resultService.updateLevel(excelVo);}@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {System.out.println("excel读取完成");}
}

全部读取并处理

controller:接收文件接口

@RequestMapping(value = "/upload", method = RequestMethod.POST)public JsonResult upload(@RequestParam("file") MultipartFile file, @RequestParam("city") String city, @RequestParam("username") String username) {if (file.isEmpty()) {throw new RuntimeException("文件上传失败");}try {ExcelListener excelListener = new ExcelListener();EasyExcel.read(file.getInputStream(), ExcelVo.class, excelListener).sheet().doRead();List<ExcelVo> list = excelListener.getList();namelistService.insertList(list, city, username);return JsonResult.ok(true);} catch (Exception e) {}}

ExcelListener :逐行存入list,再批量处理

@Component
@Data
public class ExcelListener extends AnalysisEventListener<ExcelVo> {List<ExcelVo> list = new ArrayList<>();@Overridepublic void invoke(ExcelVo excelVo, AnalysisContext analysisContext) {if (excelVo == null) {throw new RuntimeException("excel读取失败");}list.add(excelVo);}@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {System.out.println("excel读取完成");}
}

向ExcelListener 传参

controller:接收文件接口

@RequestMapping(value = "/upload", method = RequestMethod.POST)public JsonResult upload(@RequestParam("file") MultipartFile file, @RequestParam("city") String city, @RequestParam("username") String username) {if (file.isEmpty()) {throw new RuntimeException("文件上传失败");}try {ExcelListener excelListener = new ExcelListener(namelistService, city, username);EasyExcel.read(file.getInputStream(), ExcelVo.class, excelListener).sheet().doRead();return true;} catch (Exception e) {}}

ExcelListener :通过构造函数重载,传入service层接口或其他参数

@Component
@Data
public class ExcelListener extends AnalysisEventListener<ExcelVo> {private NamelistService namelistService;private String city;private String username;public ExcelListener() {}public ExcelListener(NamelistService namelistService) {this.namelistService = namelistService;}public ExcelListener(NamelistService namelistService, String city, String username) {this.namelistService = namelistService;this.city = city;this.username = username;}@Overridepublic void invoke(ExcelVo excelVo, AnalysisContext analysisContext) {if (excelVo == null) {throw new RuntimeException("excel读取失败");}namelistService.insertOne(excelVo,city,username);}@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {System.out.println("excel读取完成");}
}
http://www.lryc.cn/news/259620.html

相关文章:

  • 【STM32】ADC模数转换器
  • Git篇---第九篇
  • Paper Reading: (ACRST) 基于自适应类再平衡自训练的半监督目标检测
  • 2023年贺岁电影:一眼多,二眼好多
  • 软件测试面试中基础与功能的问题
  • map|二分查找|离线查询|LeetCode:2736最大和查询
  • 你知道Java中的BigInteger类和BigDecimal类吗?
  • 33.搜索旋转排序数组
  • 【unity】【WebRTC】从0开始创建一个Unity远程媒体流app-设置输入设备
  • Redis持久化AOF详解
  • 基于ssm网络安全宣传网站设计论文
  • 机器人行业数据闭环实践:从对象存储到 JuiceFS
  • 墒情监测FDS-400 土壤温湿电导率盐分传感器
  • QT -CloudViewer工具
  • GoLong的学习之路,进阶,微服务之使用,RPC包(包括源码分析)
  • uniapp x 相比于其他的开发系统框架怎么样?
  • 2024最新独立站建站教程!WordPress 搭建独立站的方法和步骤
  • 深入React Flow Renderer(二):构建拖动操作栏
  • Java项目学生管理系统六后端补充
  • PDF控件Spire.PDF for .NET【转换】演示:将 PDF 转换为线性化
  • 猫头虎博主深度探索:Amazon Q——2023 re:Invent大会的AI革新之星
  • Spring框架-GOF代理模式之JDK动态代理
  • 基于JAVAEE技术校园车辆管理系统论文
  • 基于FFmpeg,实现播放器功能
  • 利用tf-idf对特征进行提取
  • 遇到运维故障,有没有排查和解决故障的正确流程?
  • javaWebssh汽车销售管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计
  • 基于pandoraNext使用chatgpt4
  • 12.视图
  • Leetcode69 x的平方根