一、导入依赖

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

二、实现导出excel操作

1、对我们需要导出的实体类上加上注解,如下:

@ExcelProperty("商品编号")
private Integer gid;
@ExcelProperty("商品名称")
private String gname;
@ExcelProperty("商品价格")
private Float gprice;
@ExcelProperty("商品购买数量")
private Integer buynum;
@ExcelProperty("商品库存")
private Integer gnum;
//导出图片格式如下(照片路径一定是要真实路径,不然会报错)
//@ExcelProperty(value = {"商品图片"},converter = StringImageConverter.class)
//忽略导入
//@ExcelIgnore
@ExcelProperty("商品图片")
private String gpic;

2、编写的具类--帮助我们来实现下载excel

public class DownExcel {public static void download(HttpServletResponse response, Class t, List list) throws IOException, IllegalAccessException,InstantiationException {response.setContentType("application/vnd.ms-excel");// 设置文本内省response.setCharacterEncoding("utf-8");// 设置字符编码response.setHeader("Content-disposition", "attachment;filename=demo.xlsx"); // 设置响应头EasyExcel.write(response.getOutputStream(), t).sheet("模板").doWrite(list); //用io流来写入数据}
}

3、编写控制器

//导出为Excel
@RequestMapping("/downloadexcel.do")
public void getExcel(HttpServletResponse response) throws IllegalAccessException, IOException,
InstantiationException {List<SysUser> list = sysUserService.getAll();DownExcel.download(response,SysUser.class,list);
}

4、直接访问接口或用postman(http://localhost:8080/userctrl/downloadexcel.do)下载excel,excel如图所示:

三、实现导入excel操作

1、在mybatis的mapper里面添加一个接口(保存集合,实现批量导入)

int saveAll(List<SysUser> sysUsers);

xml如图所示:

<insert id="saveAll" parameterType="java.util.List">insert into sys_user (name,nick_name,avatar,password,salt,email,mobile,status,dept_id,create_by,create_time,last_update_by,last_update_time)values<foreach collection="list" item="item" index="index" separator=",">(#{item.name},#{item.nickName},#{item.avatar},#{item.password},#{item.salt},#{item.email},#{item.mobile},#{item.status},#{item.deptId},#{item.createBy},#{item.createTime},#{item.lastUpdateBy},#{item.lastUpdateTime})</foreach></insert>

2、创建service和service实现类,如下:

void saveList(List<SysUser> list);
@Override
public void saveList(List<SysUser> list) {sysUserMapper.saveAll(list);
}

3、导入数据的时候需要对这个进行监听,所以也需要写一个工具类,来帮忙我们处理这些数据,代码如图:

// 有个很重要的点 ExcelListener 不能被spring管理,要每次读取excel都要new,然后里面用到spring可以构造方法传进去
public class ExcelListener extends AnalysisEventListener<SysUser> {private List<SysUser> list = new ArrayList<>();/*** 每隔5条存储数据库,实际使用中可以3000条,然后清理list ,方便内存回收*/private static final int BATCH_COUNT = 5;/*** 假设这个是一个DAO,当然有业务逻辑这个也可以是一个service。当然如果不用存储这个对象没用。*/private SysUserService sysUserService;/*** 如果使用了spring,请使用这个构造方法。每次创建Listener的时候需要把spring管理的类传进来*/public ExcelListener(SysUserService sysUserService) {this.sysUserService = sysUserService;}/*** 这个每一条数据解析都会来调用*/@Overridepublic void invoke(SysUser goods, AnalysisContext analysisContext) {System.out.println("解析到一条数据:========================"+goods.toString());// 数据存储到datas,供批量处理,或后续自己业务逻辑处理。list.add(goods);// 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOMif(list.size() >= BATCH_COUNT){saveData();// 存储完成清理dataslist.clear();}}/*** 所有数据解析完成了 都会来调用*/@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {saveData();//确保所有数据都能入库}/*** 加上存储数据库*/private void saveData() {System.out.println("=============================="+list.size()+"条数据,开始存储到数据库");sysUserService.saveList(list);}}

4、控制器添加导入操作代码

//导入Excel
@RequestMapping("/importexcel.do")
@ResponseBody
public String importexcel(@RequestParam(value = "excelFile") MultipartFile file) throws IOException{EasyExcel.read(file.getInputStream(), SysUser.class, new ExcelListener(sysUserService)).sheet().doRead();return "success";
}

5、使用页面导入或者使用postman调用(http://localhost:8080/userctrl/importexcel.do)

    <h2><form action="../userctrl/importexcel.do" method="post" enctype="multipart/form-data">导入Excel:<input type="file" name="excelFile" accept=".xls,.xlsx"><input type="submit" value="提交"></form></h2>

6、提交后数据库数据增加,如图所示:

资源下载:https://download.csdn.net/download/qq_37284798/87274449

Spring Boot使用EasyExcel导入导出Excel相关推荐

  1. 使用阿里开源的EasyExcel导入导出EXCEL——工具类

    工具类 package com.example.demo.util.excel;import com.alibaba.excel.EasyExcel; import com.alibaba.excel ...

  2. SpringBoot使用poi或EasyExcel导入导出Excel文件

    使用poi导入导出Excel 首先引入poi依赖包 03版本的Excel和07版本的Excel所需要的依赖不同,都需要导入. 记录问题: 最初导入的poi包为3.6版本.WorkBook类和Sheet ...

  3. EasyExcel导入导出excel 复杂表头 表头校验 数据校验

    目录 EasyExcel特点 一.导入excel案例 二.读取excel的相关技术点 1.读取excel的方式 2.读取sheet数量 3.指定从第几行开始读数据 三.导出excel 1.前端发起请求 ...

  4. EasyExcel 导入导出Excel文件

    文章目录 写在前面 1.maven依赖 2.导入Excel文件 2.1.读取表格文件 2.2.如果有多个sheet表格 2.3.监听器封装(也可不封装) 2.4.读取数据格式化(实体类中添加注解) 3 ...

  5. Springboot 整合 easyexcel导入导出excel

    1. 引入核心依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel< ...

  6. springboot整合easyexcel 导入导出excel案例及文件无法打开

    前端请求 vue3+axios+typescript downloadByUrlStream({url:process.env.VUE_APP_API_URL1+"/MeshDevice/u ...

  7. POI和EasyExcel导入导出Excel表格

    这里写自定义目录标题 EasyExcel操作Excel表格 一.导入依赖: 二.编写实体类 三.编写测试类 POI操作Excel表格 基本功能: 一.导入依赖 二.测试类 2.1 使用HSSFWork ...

  8. 使用EasyExcel导入导出Excel报表-JAVA解析Excel工具

    一.EasyExcel概述 Java解析.生成Excel比较有名的框架有Apache poi.jxl.但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内 ...

  9. java sax 解析excel,使用EasyExcel导入导出Excel报表-JAVA解析Excel工具

    1.EasyExcel概述 Java解析.生成Excel比较有名的框架有Apache poi.jxl.但他们都存在一个严重的问题就是很是的耗内存,poi有一套SAX模式的API能够必定程度的解决一些内 ...

最新文章

  1. tcpdump for Android 移动端抓包
  2. 使用Java让android手机自动执行重复重启
  3. OEM中无法用sys用户登录
  4. 内存溢出_JVM|03内存溢出实战
  5. Python pip切换为国内镜像源(亲测可用)
  6. 很酷的word技巧---删除行前的空格
  7. C#创建WinForm应用程序的入口点
  8. C#打印0到100的素数
  9. 生日快乐程序_祝肖战1005生日快乐-用R给他画个蛋糕爱心吧
  10. sql开启mysql远程连接_SQLServer2008设置开启远程连接
  11. Abstract Self-Balancing Binary Search Tree
  12. c语言竞赛成绩排序,吧内编程竞赛:成绩公布
  13. ASP.NET 4中的SEO改进
  14. deploy owned private docker registry based on docker HUB registry image
  15. linux中文件带方块,JFreeChart图片里的中文在linux下显示为方块的解决办法
  16. React ~ 生命周期
  17. ug冲模标准件库_UG标准件库|标准件库下载|3DSource零件库|海量CAD模型
  18. HTML5新增标签--canvas之绘制你画我猜
  19. #UML# Astah+Doxygen 将C++源码映射为类图
  20. awscli配置Access key ID和Secret access key

热门文章

  1. Tampermonkey谷歌浏览器插件
  2. 基于微信小程序云开发的投票小程序源码,图文投票微信小程序源码
  3. 达梦数据库监控-DEM 部署
  4. 基于retinex理论改进的低照度图像增强算法
  5. 【物联网】23.物联网开发之感测系统 - GPS(GNSS)
  6. 互信息和左右熵的新词发现(笔记)
  7. 36 岁开发者应聘被拒?这 3 位 50 岁程序员的生存秘籍送给你!
  8. TTL(生存时间)介绍
  9. CL210管理OPENSTACK网络--开放虚拟网络(OVN)简介
  10. GlobalSign的旗下的SSL证书产品