Spring Boot整合 EasyExcel 实现复杂 Excel 表格的导入与导出功能
文章目录
- 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 处理变得非常简单。在实际项目中,可以根据业务需求进行更加复杂的配置和处理,满足不同场景的导入导出要求。
后记 👉👉💕💕美好的一天,到此结束,下次继续努力!欲知后续,请看下回分解,写作不易,感谢大家的支持!! 🌹🌹🌹
相关文章:
Spring Boot整合 EasyExcel 实现复杂 Excel 表格的导入与导出功能
文章目录 1. 简介2. 引入依赖3. 导入功能实现3.1 创建实体类3.2 编写导入 Controller3.3 编写导入页面 4. 导出功能实现4.1 编写导出 Controller4.2 编写导出页面 5. 启动应用 🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 &…...
SQLSERVER排查CPU占用高
操作系统是Windows2008R2 ,数据库是SQL2008R2 64位 64G内存,16核CPU 硬件配置还是比较高的,他说服务器运行的是金蝶K3软件,数据库实例里有多个数据库 现象 他说是这几天才出现的,而且在每天的某一个时间段才会出现CPU占用高的情况 内存占用不太高,只占用了30个G CPU…...
uniapp:富文本回显
一、使用uniapp官方的标签 rich-text: 会出现图片无法显示的问题,可以用以下方法来过滤处理 <rich-text :nodes"question.title | formatRichHtml"></rich-text> formatRichHtml(html) {if (!html) {return html;}//控制小程序…...
flink内存配置
flink内存配置 配置 TaskManager 内存 | Apache Flink...
easyexcel 导出
在使用EasyExcel库进行数据写入时,通常我们会使用实体类来存储数据。但是当遇到动态查询,无法确定属性数量和名称时,就需要使用Map来接收数据。然而,直接将Map中的数据写入Excel表格并不是一件简单的事情。接下来,我将…...
maven命令行安装依赖测试
mvn dependency:get -DgroupIdorg.springframework -DartifactIdspring-core -Dversion5.3.9作用:可用于测试配置环境变量后,能否下载依赖到本地仓库...
Redis 笔记
文章目录 安装 & 启动杂乱String字符串 key-valueList 有序重复列表Set 无序不重复列表SortedSet 有序集合Hash 哈希Stream 轻量级消息队列订阅模式 学习地址:https://www.bilibili.com/video/BV1Jj411D7oG/ 安装 & 启动 安装包地址: https://g…...
可穿戴智能设备应用领域以及使用意义分别有哪些?
可穿戴智能设备有哪些? 可穿戴智能设备是指可以佩戴在身上,具有智能功能和交互能力的电子设备。以下是一些常见的可穿戴智能设备: 智能手表:智能手表结合了传统手表的功能和智能设备的特性,可以显示时间、接收通知、监…...
【Linux操作系统】探秘Linux奥秘:文件系统的管理与使用
🌈个人主页:Sarapines Programmer🔥 系列专栏:《操作系统实验室》🔖诗赋清音:柳垂轻絮拂人衣,心随风舞梦飞。 山川湖海皆可涉,勇者征途逐星辉。 目录 🪐1 初识Linux OS &…...
机器学习——主成分分析(PCA)
主成分分析(Principal Component Analysis,简称PCA)是一种常用的无监督学习算法,用于降维和数据可视化。主要目标是将高维数据转换成低维空间,同时尽可能保留原始数据的信息。 PCA的主要思想是通过线性变换将原始数据…...
论最近热门的AI绘画技术—从小白绘画到文创手账设计【文末送书-13】
文章目录 🏀前言⚽AI绘图技术栈⚾️简单的代码实现案例🏈iPad萌系简笔画:从小白绘画到文创手账设计【文末送书-13】⛳粉丝福利:文末推荐与福利免费包邮送书! 🏀前言 AI绘画技术,也称为人工智能…...
python打开文件的方式比较
open(addr,w) 打开之后文件无论以前有什么,打开后都要清空 /// open(addr,r) 文件打开后,不删除以前内容...
使用Jenkins和单个模板部署多个Kubernetes组件
前言 在持续集成和部署中,我们通常需要部署多个实例或组件到Kubernetes集群中。通过Jenkins的管道脚本,我们可以自动化这个过程。在本文中,我将演示如何使用Jenkins Pipeline及单个YAML模板文件(.tpl)来部署多个类似的…...
Unity Meta Quest 一体机开发(十二):【手势追踪】Poke 交互 - 用手指点击由 3D 物体制作的 UI 按钮
文章目录 📕教程说明📕给玩家配置 HandPokeInteractor📕用 3D 物体制作可以被点击的 UI 按钮⭐搭建物体层级⭐给物体添加脚本⭐为脚本变量赋值 📕模仿官方样例按钮的样式📕在按钮上添加文字📕修改按钮图片 …...
Vue 3 中安装并使用 Axios 详细步骤+样例代码详解
axios详细步骤 在集成终端打开,使用 npm 或 yarn 安装 Axios: npm install axios或 yarn add axios这将在您的项目中安装 Axios。 在您的 Vue 3 项目中创建一个用于发送 HTTP 请求的模块或文件,比如 http.js。 在 http.js 文件中导入 Axios…...
IDEA 控制台中文出现乱码问题解决
一、问题概述 请看下图 二、问题分析 IDEA控制台输出乱码一般会有三种来源: ① IDEA本身编码错误 ② Tomcat日志输出编码错误 ③ 项目本身原因。 终极原因:IDEA编码和Tomcat编码不一致,统一设置为UTF-8即可。 三、解决思路 修改…...
计算机网络(1)
计算机网络(1) 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 计算机网络和因特网(1)因特网概念解读服务常见的服务 协议网络边缘特点强调 网络核心特点强调 小程一言 我的计算机网络专栏,是自己在计算机网络…...
如果我想用python自动操作手机、电脑软件,应该学python哪方面的知识呢?
Python 作为一门万能语言,在各方面的表现都非常好 如果我们想使用 Python 来操作手机和电脑,那么需要学习掌握如下几个方面的知识 1. 基本的Python编程 显而易见,你需要学习Python的基本语法、数据类型、控制流和函数等基本概念。这是后面…...
关于java命令行传参
关于java命令行传参 本篇文章拓展以下java中的命令行传参😎 有时候你希望运行一个程序的时候再传递给它消息,这要靠传递命令行参数给main()方法来实现。首先我们先来创建一个数组遍历。 public class Demo {public static void main(String[] args){/…...
[LeetCode][Python]389. 找不同
简单 给定两个字符串 s 和 t ,它们只包含小写字母。 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。 示例 1: 输入:s "abcd", t "abcde" 输出:"…...
鸿蒙崛起:互联网大厂加速鸿蒙原生应用开发,人才争夺战打响
随着华为鸿蒙系统的发布和不断推进,一场以鸿蒙为中心的生态竞争已经拉开帷幕。近日,网易、美团等多家互联网公司发布了与鸿蒙系统有关的岗位招聘,加速推进鸿蒙原生应用开发转型。这种趋势表明,鸿蒙系统已经引起了行业的广泛关注&a…...
OR-NeRF论文笔记
OR-NeRF论文笔记 文章目录 OR-NeRF论文笔记论文概述Abstract1 Introduction2 Related Work3 Background4 Method4.1 Multiview Segmentation4.2 Scene Object Removal 5 ExperimentsDatasetsMetricsMultiview SegmentationScene Object Removal 6 Conclusion 论文概述 目的&am…...
【web】vue 播放后端(flask)发送的 mp3 文件
文章目录 演示后端(flask)前端(vue3)重要说明 演示 后端(flask) 后端返回的是 mp3 文件的 url,是可以直接在浏览器上打开后播放的处理跨域请求pip install flask-cors后端代码from flask impor…...
vmware安装openEuler 22.03 LTS操作系统
vmware安装openEuler 22.03 LTS操作系统 1、下载openEuler操作系统镜像文件2、安装openEuler操作系统3、配置openEuler操作系统3.1、配置静态IP地址 和 dns3.2、查看磁盘分区3.3、查看系统版本 1、下载openEuler操作系统镜像文件 官网下载链接 链接: https://www.openeuler.or…...
Android registerForActivityResult
startActivityForResult 已经被标记为不推荐的方法,推荐的替代方案是使用 registerForActivityResult: // Activity 的 onCreate 方法中调用 registerForActivityResult val activityResultLauncher registerForActivityResult(ActivityResultContract…...
【CSS】布局方式梳理和总结
1. 前言 网页布局是CSS的重点功能,布局的传统方案是基于盒子模型,依靠display属性、position属性和float属性,它对一些特殊布局很麻烦。 CSS3推出的Flex布局和网格布局,让开发者更容易定制自己想要的布局。本篇梳理和总结一些布局…...
PHP计算某时间段内有几个周及某时间为今年第几周函数
date_default_timezone_set(PRC); function count_weeks($startDate, $endDate ){//开始时间$startDate date(Y-m-d, $startDate);//结束时间if(empty($endDate)) {$endDate date(Y-m-d);}else{$endDate date(Y-m-d, $endDate);}//跨越天数$n (strtotime($endDate)-strtot…...
华为无线AC内三层漫游配置详解
重要说明 1、在一台ac中实现三层漫游 2、ac和核心的互联vlan和ap的管理vlan是同一个广播域,可以不用配option 43 3、直接转发模式,ac上可以不起业务vlan,ac和核心交换机上可以只放行一个互联vlan 10 4、ac上要启两个vap魔板,两个…...
GPT-5、开源、更强的ChatGPT!OpenAI公布2024年计划
年终岁尾,正值圣诞节热闹气氛的OpenAI写下了2024年的发展清单。 OpenAI联合创始人兼首席执行官Sam Altman在社交平台公布,AGI(稍晚一些)、GPT-5、更好的语音模型、更高的费率限制; 更好的GPTs;更好的推理…...
java idea中做一个简易的图书管理系统(控制台输入输出,无数据库)
1:先创建增删改查四个接口 (1)QueryBook查询接口 package com.by.dao;import com.by.entity.Book;public interface QueryBook {/*** 查询所有图书信息* param bs*/void selectBook(Book[] bs);/*** 根据名字查询一个图书信息* param bookN…...
搜索类的网站优点/小学生简短小新闻摘抄
SlickUpload的介绍 最近在看《ASP.NET MVC2 IN ACTION》英文版时发现里面介绍到一个在ASP.NET中上传大文件的ASP.NET控件,叫SlickUpload,软件的介绍下载和介绍网址是:http://krystalware.com/Products/SlickUpload/。 我们知道,在…...
地方门户网站建设要求/网络客服
单元格的高度自适应原理就是通过内部label的高度变化来增加和减少单元格的高度。 - (UILabel *)label { if(_label nil) { _label [[UILabel alloc] init]; [self.contentView addSubview:_label]; _label.numberOfLines 0; [_label mas_makeConstraints:^(MASConstraintMak…...
营销型网站建设 上海/短视频seo询盘获客系统
拓扑图软件技术对比1. Javascript技术1) 采用jquery的拓扑图插件jquery.topology.js组件,jquery的组件,具体的可以百度或谷歌搜索下,有例子。优点:对浏览器兼容性好,速度快。缺点:不是很美观&a…...
做网站设计的电脑需要什么配置/超八成搜索网站存在信息泄露问题
使用注解配置 步骤 导包(421)基本4个组件包加2个日志包(log4j,logging),再加aop 将对象注册到容器中spring 中提供Component 的三个衍生注解:(功能目前来讲是一致的) 如果不指定任何属性时,默认使用短类名作为bean的id(首字母改成小写) Component("…...
免费做封面网站/网络推广渠道和方法
1.1 主服务器配置1.安装插件2.mysql > INSTALL PLUGIN rpl_semi_sync_master SONAME semisync_master.so; 3.查看全局变量4.mysql > show global variables like %semi%;设置主服务器的半同步复制全局变量mysql > set global rpl_semi_sync_master_enabledON; 开启半同…...
网站建设合作伙伴/seo的关键词无需
目录OS/OS.PATH模块系统操作目录操作Path模块判断例题OS/OS.PATH模块 在Python里面,我们要对文件系统进行访问,一般是通过os模块来实现的Python是跨平台语言。有了os模块,不需要关心什么操作系统下使用什么模块 系统操作 os.name显示当前使…...