springboot系列(二十三):如何实现Excel文件导入?这你得会 | 超级详细,建议收藏
Posted bug菌¹
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot系列(二十三):如何实现Excel文件导入?这你得会 | 超级详细,建议收藏相关的知识,希望对你有一定的参考价值。
👨🎓作者:bug菌
🎉简介:在CSDN、掘金等社区优质创作者,全网合计6w粉+,对一切技术都感兴趣,重心偏java方向,目前运营公众号[猿圈奇妙屋],欢迎小伙伴们的加入,一起秃头。
🚫特别声明:原创不易,转载请附上原文出处链接和本文声明,谢谢配合。
🙏版权声明:文章里可能部分文字或者图片来源于互联网或者百度百科,如有侵权请联系bug菌处理。
嗨,家人们,我是bug菌呀,我又来啦。今天我们来聊点什么咧,OK,接着为大家更《springboot零基础入门教学》系列文章吧。希望能帮助更多的初学者们快速入门!
小伙伴们在批阅文章的过程中如果觉得文章对您有一丝丝帮助,还请别吝啬您手里的赞呀,大胆的把文章 点亮👍吧,您的点赞三连( 收藏⭐️+关注👨🎓+留言📃)就是对bug菌我创作道路上最好的鼓励与支持😘。时光不弃🏃🏻♀️,创作不停💕,加油☘️
一、前言🔥
上期,我主要是带着大家学习了easypoi的一些概念及依赖配置,包括一些常用注解的使用,这期我将带着大家进行实战练习,希望大家在学习的路上虚心学习,我也不是大佬,但是我希望的写的文章能带动大家,哪怕这个大家是一个人,我也愿意帮我会的全部都倾囊相授,我就是这么一个人,让自己发光发热,带动更多人,你为大家,大家才会为你。
二、引入依赖配置🔥
<!--easypoi依赖,excel导入导出-->
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-spring-boot-starter</artifactId>
<version>4.2.0</version>
</dependency>
三、实现excel导入🔥
1️⃣先定义一个接收实体
/**
* excel导入user参数
*
* @author luoYong
* @version 1.0
* @date 2022/2/15 14:34
*/
@Data
public class ImportUser implements Serializable
private static final long serialVersionUID = 1L;
/**
* @Excel 作用在一个filed上面,对列的描述
* @param name 列名
* @param orderNum 下标,从0开始。
*/
@Excel(name = "姓名", orderNum = "0")
private String name;
@Excel(name = "年龄", orderNum = "1")
private Integer age;
@Excel(name = "性别", orderNum = "2")
private String sex;
@Excel(name = "地址", orderNum = "3")
private String address;
@Excel(name = "用户描述", orderNum = "4")
private String describes;
注意:
如果easypoi没有设置orderNum,默认是从上往下排序!!!
列的标题一定要和我们对象中的@Excle name名称对应,一定要对应!具体请看如下:
拓展一下:
@Data 注解为lombok插件提供,为类提供读写功能,从而不用写get、set方法。
@Excel 作用到filed上面,是对Excel一列的一个描述。
2️⃣Controller添加导入方法
/**
* excel批量导入用户
*/
@GetMapping("/import")
@ApiOperation(value = "excel批量导入用户", notes = "excel批量导入用户")
public ResultResponse<Boolean> importUsers(@RequestParam("file") MultipartFile file)
return new ResultResponse<>(userService.importUsers(file));
3️⃣定义导入接口
/**
* excel批量导入用户
*
* @param file excel文件
*/
Boolean importUsers(MultipartFile file);
4️⃣实现导入接口
/**
* excel批量导入用户
*
* @param file excel文件
*/
@Override
public Boolean importUsers(MultipartFile file)
ImportParams importParams = new ImportParams();
//标题行设置为1行,默认是0,可以不设置;依实际情况设置。
importParams.setTitleRows(1);
// 表头设置为1行
importParams.setHeadRows(1);
try
//读取excel
List<ImportUser> users = ExcelImportUtil.importExcel(file.getInputStream(), ImportUser.class, importParams);
//批量插入
boolean isSuccess = this.saveUsers(users);
//返回结果
return isSuccess;
catch (Exception e)
e.printStackTrace();
return false;
这里需要注意表头的行数设置一定要正确!否则集合数据将无法读取报错。一定要区分表头与标题的区别,表头是列名称,标题是表头上面的文字,具体事例可以看下方截图。
示例截图文件中有标题并占用一行,所以setTitleRows
设置为1。表头也占用一行,所以setHeadRows
设置为1;
代码具体设置如下:
importParams.setTitleRows(1);
importParams.setHeadRows(1);
然后获取到要插入到数据库中的数据之后,再使用批量插入方法,将集合插入到数据库中。
/**
* 批量插入用户数据
*/
private boolean saveUsers(List<ImportUser> users)
//存放user
List<UserEntity> userList = new ArrayList<>();
//转成user实体
for (ImportUser user : users)
UserEntity userEntity = new UserEntity(user);
userList.add(userEntity);
//批量插入
return this.saveBatch(userList);
5️⃣测试接口
接口都实现完了,接着我们就来进行一波接口测试吧。第一步:先将url填写完整,然后参数传入,选择Body-->form-data;以数据表格的方式提交,然后参数填写你固定的参数名,譬如我的:file,参数类型选择file而不是默认的text文本,其value选择你刚才创建好的excel导入文件,选择添加即可。
具体演示如下:
第二步:点击Send,请求接口。查看接口结果返回。
再查看一下控制台sql执行打印,具体如下:说明没有问题,没有报错。
如上表示,返回结果为true,则证明你所excel中的数据成功入库,如果你不放心,最直接的办法就是你登录mysql数据库,自己去表里查看excel数据是否都在表内,若是数据量多大,你也可以直接执行sql进行查询。
第三步:连接数据库,查看数据是否插入入库。
... ...
ok,以上就是我这期的全部内容啦,如果还想学习更多,你可以看看我的往期热文推荐哦,每天积累一个奇淫小知识,日积月累下去,你一定能成为令人敬仰的大佬的。好啦,咱们下期见~
四、往期推荐🔥
- springboot系列(一):如何创建springboot项目及启动
- springboot系列(三):多环境切换,实例演示
- springboot系列(四):stater入门
- springboot系列(五):史上最最最全springboot常用注解
- springboot系列(六):mysql配置及数据库查询
- springboot系列(七):如何通过mybatis-plus实现接口增删改查
- springboot系列(八):mybatis-plus之条件构造器使用手册
- springboot系列(九):mybatis-plus之如何自定义sql
- springboot系列(十):mybatis之xml映射文件>、<=等特殊符号写法
- springboot系列(十一):实现多数据源配置,开箱即用
- springboot系列(十二):如何实现邮件发送提醒,你一定得会(准备篇)
- springboot系列(十三):如何实现发送普通邮件?你一定得会
- springboot系列(十四):如何实现发送图片、doc文档等附件邮件?你一定得会
- springboot系列(十五):如何实现静态邮件模板发送?你一定得会
- springboot系列(十六):如何实现发送邮件提醒,附完整源码
- springboot系列(十七):集成在线接口文档Swagger2
- springboot系列(十八):如何Windows安装redis?你玩过么
- springboot系列(十九):如何集成redis?不会我教你
- springboot系列(二十):如何通过redis实现手机号验证码功能
- ... ...
五、文末🔥
如果还想要学习更多,小伙伴们可关注bug菌专门为大家创建的专栏《springboot零基础入门教学》,从无到有,从零到一!希望能帮助到更多小伙伴们。
我是bug菌,一名想走👣出大山改变命运的程序猿。接下来的路还很长,都等待着我们去突破、去挑战。来吧,小伙伴们,我们一起加油!未来皆可期,fighting!
最后送大家两句我很喜欢的话,与诸君共勉!
☘️做你想做的人,没有时间限制,只要愿意,什么时候都可以start。
🍀你能从现在开始改变,也可以一成不变,这件事,没有规矩可言,你可以活出最精彩的自己。
💌如果文章对您有所帮助,就请留下您的赞吧!(#^.^#);
💝如果喜欢bug菌分享的文章,就请给bug菌点个关注吧!(๑′ᴗ‵๑)づ╭❤~;
💗如果对文章有任何疑问,还请文末留言或者加群吧;
💞鉴于个人经验有限,所有观点及技术研点,如有异议,请直接回复参与讨论(请勿发表攻击言论,谢谢);
💕版权声明:原创不易,转载请附上原文出处链接和本文声明,版权所有,盗版必究!!!谢谢。
以上是关于springboot系列(二十三):如何实现Excel文件导入?这你得会 | 超级详细,建议收藏的主要内容,如果未能解决你的问题,请参考以下文章
springboot系列(二十三):如何实现Excel文件导入?这你得会 | 超级详细,建议收藏
头秃系列,二十三张图带你从源码分析Spring Boot 启动流程~
springboot系列(十三):如何实现发送普通邮件?你一定得会|超级详细,建议收藏