历史文章(文章累计480+)
《国内最全的Spring Boot系列之一》
《国内最全的Spring Boot系列之二》
《国内最全的Spring Boot系列之三》
《国内最全的Spring Boot系列之四》
《国内最全的Spring Boot系列之五》
《国内最全的Spring Boot系列之六》
【EasyPoi实战系列】Spring Boot使用EasyPoi动态控制导出的列 - 第471篇
100万数据导出,居然爆炸了OutOfMemoryError?【EasyPoi实战系列】- 第472篇
导出下拉列表的两种小技巧【EasyPoi实战系列】- 第473篇
数据脱敏/换行/枚举的处理【EasyPoi实战系列】- 第474篇
模板文件导出Excel【EasyPoi实战系列】- 第478篇
Excel的Html预览和html转Excel【EasyPoi实战系列】- 第479篇
悟纤:师傅,你咋回事?你这最近讲的都是导出数据,不讲讲导入吗?
师傅:有导出就有导入呀,这个必须的讲呢。
悟纤:那导出讲了这么多节,应该差不多了。
师傅:导出可以先告一段落了。这节就要来和大家讲讲导入的内容。
悟纤:千呼万唤始出来,犹抱琵琶半遮面。师傅你就快点吧,我等的花都谢了。
师傅:来了,来了,开讲。
导读
Hi,大家好,我是悟纤。
我就是我,不一样的烟火。我就是我,与众不同的小苹果。
在前面的小节中,主要是介绍了Excel的导出实现,既然有导出就有导入,这一节就来看看。
👇🏻👇🏻👇🏻EasyPoi实战系列:
01.《【EasyPoi实战系列】Spring Boot集成EasyPoi - 第467篇》
02.《【EasyPoi实战系列】Spring Boot使用EasyPoi的注解让表格更漂亮以及图片的导出 - 第468篇》
03.《【EasyPoi实战系列】Spring Boot使用EasyPoi实现一对多的导出 - 第469篇》
04.《【EasyPoi实战系列】Spring Boot使用EasyPoi实现多Sheet导出 - 第470篇》
05.《【EasyPoi实战系列】Spring Boot使用EasyPoi动态控制导出的列 - 第471篇》
06.《100万数据导出,居然爆炸了OutOfMemoryError?【EasyPoi实战系列】- 第472篇》
07.《导出下拉列表的两种小技巧【EasyPoi实战系列】- 第473篇》
08.《数据脱敏/换行/枚举的处理【EasyPoi实战系列】- 第474篇》
09.《模板文件导出Excel【EasyPoi实战系列】- 第478篇》
一、导入Excel数据原理
先来看下导入整体要解决的问题:
(1)在SpringBoot中如何接收文件流:
使用MultipartFile就可以接收到前端传送到后端的文件流。
(2)如何读取Exel文件流,并且解析每一行的数据:
使用EasyPoi提供的类ExcelImportUtil的importExcel(InputStream inputstream, Class<?> pojoClass, ImportParams params)。
(3)实体类和Excel表格的单元格是如何对应的:
只需要在实体类上添加注解@Excel(name = "姓名")。
二、导入Excel数据实操
首先创建一个实体类:
package com.example.demo.vo;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class UserImportVO implements Serializable {
@Excel(name = "姓名")
private String realName;
@Excel(name = "性别",replace = { "男生_1", "女生_2" }, addressList = true)
private Integer sex;
@Excel(name = "出生日期",format = "yyyy-MM-dd")
private Date birthday;
@Excel(name = "手机号码")
private String phone;
@Excel(name = "邮箱")
private String email;
@Excel(name = "头像地址")
private String avatar;
@Excel(name = "描述")
private String remark;
}
导入Excel的代码:
/**
* 导入excel数据
* /demo/importExcel01
*/
@RequestMapping("/importExcel01")
public List<UserImportVO> importExcel01(@RequestParam("file") MultipartFile multipartFile) throws Exception {
//new一个模板
ImportParams params = new ImportParams();
//设置表格标题行数,默认0,这是读取时会跳过的行数
params.setTitleRows(1);
//表头行数,默认1。
//params.setHeadRows(1);
//开始读取,并用list接收,方便处理
List<UserImportVO> result = ExcelImportUtil.importExcel(multipartFile.getInputStream(), UserImportVO.class, params);
System.out.println(JSONUtil.toJsonStr(result));
return result;
}
那怎么测试呢?
利用之前的导出代码,先导出一个Excel数据,执行如下导出:
http://127.0.0.1:8080/demo/exportExcel
得到这样的一份数据,然后在利用一些表单提交工具,进行提交:
这么简单的就实现导入数据的功能。