Spring Boot整合 EasyExcel 实现复杂 Excel 表格的导入与导出功能

Alt

文章目录

    • 1. 简介
    • 2. 引入依赖
    • 3. 导入功能实现
      • 3.1 创建实体类
      • 3.2 编写导入 Controller
      • 3.3 编写导入页面
    • 4. 导出功能实现
      • 4.1 编写导出 Controller
      • 4.2 编写导出页面
    • 5. 启动应用

🎈个人主页:程序员 小侯
🎐CSDN新晋作者
🎉欢迎 👍点赞✍评论⭐收藏
✨收录专栏:Java框架
✨文章内容:整合 EasyExcel
🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!🤗

1. 简介

EasyExcel 是阿里巴巴开源的一款基于 Java 的简单、快速、强大的 Excel 处理工具。在实际应用中,Excel 的导入与导出是常见的需求,而 EasyExcel 提供了简便的 API,使得这些操作变得非常容易。本文将介绍如何在 Spring Boot 项目中整合 EasyExcel,实现复杂 Excel 表格的导入与导出功能。
在这里插入图片描述

2. 引入依赖

pom.xml 文件中引入 EasyExcel 的依赖:

<dependencies><!-- EasyExcel --><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.4.3</version></dependency><!-- Spring Boot Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>

3. 导入功能实现

3.1 创建实体类

创建与 Excel 表格对应的实体类,注解 @ExcelProperty 用于指定属性与 Excel 列的映射关系:

public class User {@ExcelProperty("ID")private Long id;@ExcelProperty("姓名")private String name;@ExcelProperty("年龄")private Integer age;// 省略 getter 和 setter
}

3.2 编写导入 Controller

创建导入功能的 Controller 类,使用 @PostMapping 注解处理导入请求:

@RestController
@RequestMapping("/excel")
public class ExcelController {@PostMapping("/import")public String importExcel(@RequestParam("file") MultipartFile file) {try (InputStream inputStream = file.getInputStream()) {List<User> userList = EasyExcel.read(inputStream).head(User.class).sheet().doReadSync();// 处理导入的数据,例如保存到数据库return "导入成功";} catch (Exception e) {e.printStackTrace();return "导入失败";}}
}

3.3 编写导入页面

创建导入页面,使用 HTML 表单上传 Excel 文件:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Excel导入</title>
</head>
<body><form action="/excel/import" method="post" enctype="multipart/form-data"><input type="file" name="file" accept=".xls,.xlsx"><button type="submit">导入</button></form>
</body>
</html>

4. 导出功能实现

在这里插入图片描述

4.1 编写导出 Controller

创建导出功能的 Controller 类,使用 @GetMapping 注解处理导出请求:

@RestController
@RequestMapping("/excel")
public class ExcelController {// 导出数据的模拟数据private List<User> mockData() {List<User> userList = new ArrayList<>();userList.add(new User(1L, "Alice", 25));userList.add(new User(2L, "Bob", 30));userList.add(new User(3L, "Charlie", 22));return userList;}@GetMapping("/export")public void exportExcel(HttpServletResponse response) {try (OutputStream outputStream = response.getOutputStream()) {response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");response.setHeader("Content-disposition", "attachment;filename=user.xlsx");EasyExcel.write(outputStream, User.class).sheet("用户信息").doWrite(mockData());} catch (Exception e) {e.printStackTrace();}}
}

4.2 编写导出页面

创建导出页面,通过超链接触发导出操作:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Excel导出</title>
</head>
<body><a href="/excel/export">导出Excel</a>
</body>
</html>

5. 启动应用

启动 Spring Boot 应用,访问导入页面和导出页面,即可进行 Excel 表格的导入与导出操作。

通过以上步骤,我们成功地整合了 Spring Boot 与 EasyExcel,实现了复杂 Excel 表格的导入与导出功能。EasyExcel 提供了丰富的配置选项和灵活的 API,使得 Excel 处理变得非常简单。在实际项目中,可以根据业务需求进行更加复杂的配置和处理,满足不同场景的导入导出要求。

后记 👉👉💕💕美好的一天,到此结束,下次继续努力!欲知后续,请看下回分解,写作不易,感谢大家的支持!! 🌹🌹🌹

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/590501.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring.factories

spring.factories 在Java中&#xff0c;Spring Framework是一个非常流行的开源框架&#xff0c;它提供了很多的功能和工具&#xff0c;使得开发者可以更加方便地进行Web开发、数据访问、消息传递等操作。在Spring Framework中&#xff0c;有一个非常重要的配置文件&#xff0c…

你好2024!

大家好&#xff0c;我是小悟 2024年1月1日&#xff0c;新年的第一天&#xff0c;阳光明媚&#xff0c;空气中弥漫着希望和新的开始的气息。在这个特别的日子里&#xff0c;大家纷纷走出家门&#xff0c;迎接新年的到来。 街道上&#xff0c;熙熙攘攘的人群中&#xff0c;有孩…

C++/Qt版酒店客房管理系统代码详解——报表统计模块

5.报表统计模块:用于生成各种统计报表,如入住率报表、收入报表等, 代码中,创建了一个名为`ReportWidget`的自定义QWidget类,用于显示报表统计模块的界面。在构造函数中,我们创建了标题标签、类型下拉框、表格和生成报表按钮,并使用垂直布局将它们添加到主窗口中。 在`…

Android中线程间的通信-Handler

Handler机制在Android中主要用于线程间的通信&#xff0c;特别是处理从子线程向主线程&#xff08;UI线程&#xff09;传递消息和更新界面。 Handler中的四个关键对象及其作用&#xff1a; Message&#xff1a; Message 是在线程间传递的数据载体&#xff0c;它包含了需要处理…

【动态管理日志】Spring Boot 实现 热插拔 AOP,非常实用!

现在有这么一个需求&#xff1a;就是我们日志的开与关是交给使用人员来控制的&#xff0c;而不是由我们开发人员固定写死的。大家都知道可以用aop来实现日志管理&#xff0c;但是如何动态的来实现日志管理呢&#xff1f;aop源码中的实现逻辑中有这么一个步骤&#xff0c;就是会…

将学习自动化测试时的医药管理信息系统项目用idea运行

将学习自动化测试时的医药管理信息系统项目用idea运行 背景 学习自动化测试的时候老师的运行方式是把医药管理信息系统项目打包成war包后再放到tomcat的webapp中去运行&#xff0c;于是我想着用idea运行会方便点&#xff0c;现在记录下步骤方便以后查找最开始没有查阅资料&am…

二、Mysql数据操作[数据查询、数据更改、常见词义]

一、增删改查 1.增 格式&#xff1a;INSERT INTO TABLES(value1,value2) VALUES (1,2),(12,34); INSERT INTO test1(id, p_name, p_data) VALUES (1,1,1), (2,2,2);2.删 格式&#xff1a;DELETE FROM TABLES WHERE condition DELETE FROM test1 WHERE id1;3.改 格式&…

蓝牙物联网灯控设计方案

蓝牙技术是当前应用最广泛的无线通信技术之一&#xff0c;工作在全球通用的 2.4GHZ 的ISM 频段。蓝牙的工作距离约为 100 米&#xff0c;具有一定的穿透性&#xff0c;没有方向限制。具有低成本、抗干扰能力强、传输质量高、低功耗等特点。蓝牙技术组网比较简单&#xff0c;无需…

antd5 Layout中Header与Sider背景色注入

前言 截止本文antd5.12.5&#xff0c; 通过ConfigProvider的方式统一修改主题色&#xff0c; 会出现Sider与Header无法修改背景色的问题。 这种行为与官方提供的theme-editor中展示的样式并不一致。 https://ant-design.antgroup.com/theme-editor-cn 在theme-editor中&#…

Dubbo 的服务请求失败怎么处理?

文章目录 Dubbo 的服务请求失败怎么处理&#xff1f; Dubbo 的服务请求失败怎么处理&#xff1f; Dubbo 是一个 RPC 框架&#xff0c;它为我们的应用提供了远程通信能力的封装&#xff0c;同时&#xff0c; Dubbo 在 RPC 通信的基础上&#xff0c;逐步在向一个生态在演进&…

throw 和 throws 的区别

Java 中的异常处理除了包括捕获异常和处理异常之外&#xff0c;还包括声明异常和拋出异常&#xff0c;可以通过 throws 关键字在方法上声明该方法要拋出的异常&#xff0c;或者在方法内部通过 throw 拋出异常对象。 throws 关键字和 throw 关键字在使用上的几点区别如下&#…

【 YOLOv5】目标检测 YOLOv5 开源代码项目调试与讲解实战(3)-训练yolov5模型(本地)

训练yolov5模型&#xff08;本地&#xff09; 训练文件 train.py训练如下图 一些参数的设置weights:对于weight参数&#xff0c;可以往Default参数中填入的参数有 cfg&#xff1a;&#xff08;缩写&#xff09;cfg参数可以选择的网络模型 data对于data hyp 超参数epochs 训练多…

绍兴市越城区科研企业可以申请的科研基金和补助主要包括:

绍兴市越城区科研企业可以申请的科研基金和补助主要包括&#xff1a; 国家自然科学基金&#xff1a;主要支持基础科学研究&#xff0c;是科研项目的主要资金来源之一。浙江省科技厅科技计划项目&#xff1a;浙江省科技厅每年会发布科技计划项目指南&#xff0c;越城区内的企业…

托管在亚马逊云科技的向量数据库MyScale如何借助AWS基础设施构建稳定高效的云数据库

MyScale是一款完全托管于亚马逊云科技&#xff0c;支持SQL的高效向量数据库。MyScale的优势在于&#xff0c;它在提供与专用向量数据库相匹敌甚至优于的性能的同时&#xff0c;还支持完整的SQL语法。以下内容&#xff0c;将阐述MyScale是如何借助亚马逊云科技的基础设施&#x…

介绍Docker的基本概念和优势,以及在应用程序开发中的实际应用

Docker是一种开源的容器化平台&#xff0c;可以将软件包裹在一个独立的容器中&#xff0c;并提供一种轻量级、可移植和自包含的环境来运行应用程序。Docker的基本概念包括以下几个方面&#xff1a; 容器&#xff1a;容器是独立运行的软件包&#xff0c;包含应用程序和它所依赖的…

张量操作与线性回归

一、张量的操作&#xff1a;拼接、切分、索引和变换 &#xff08;1&#xff09;张量拼接与切分 1.1 torch.cat() 功能&#xff1a;将张量按维度dim进行拼接 • tensors: 张量序列 • dim : 要拼接的维度 torch.cat(tensors, dim0, outNone)函数用于沿着指定维度dim将多个张量…

simulink代码生成(六)——多级中断的配置

假如系统中存在多个中断&#xff0c;需要合理的配置中断的优先级与中断向量表&#xff1b;在代码生成中&#xff0c;要与中断向量表对应&#xff1b;中断相关的知识参照博客&#xff1a; DSP28335学习——中断向量表的初始化_中断向量表什么时候初始化-CSDN博客 F28335中断系…

【计算机毕业设计】SSM汽车维修预约平台

项目介绍 本项目分为前后台&#xff0c;前台为普通用户登录&#xff0c;后台为管理员登录&#xff1b; 管理员角色&#xff1a; 管理员登录,新增管理员信息,查看管理员信息,查询管理员信息,查看用户信息列表,查询用户信息,新增新闻公告,查看新闻公告,查询新闻公告,新增配件类…

SELinux 安全模型——TE

SELinux 安全模型——TE 首发公号&#xff1a;Rand_cs 通过前面的示例策略&#xff0c;大家对 SELinux 应该有那么点感觉认识了&#xff0c;从这篇开始的三篇文章讲述 SELinux 的三种安全模型&#xff0c;会涉及一些代码&#xff0c;旨在叙述 SELinux 内部的原理 SELinux 提供…

matplotlib范围曲线简例

想在画&#xff08;平均&#xff09;loss 曲线时顺便表示方差&#xff0c;即每一个 epoch 的平均 loss 用 plot 画曲线&#xff0c;而在曲线周围用一个浅色区域表示方差。效果&#xff1a; 参考 [1-3]&#xff0c;用到 matplotlib.pyplot.fill_between 函数。为显示对浅色区及…