Spring Boot使用EasyExcel导入导出Excel
一、导入依赖
<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相关推荐
- 使用阿里开源的EasyExcel导入导出EXCEL——工具类
工具类 package com.example.demo.util.excel;import com.alibaba.excel.EasyExcel; import com.alibaba.excel ...
- SpringBoot使用poi或EasyExcel导入导出Excel文件
使用poi导入导出Excel 首先引入poi依赖包 03版本的Excel和07版本的Excel所需要的依赖不同,都需要导入. 记录问题: 最初导入的poi包为3.6版本.WorkBook类和Sheet ...
- EasyExcel导入导出excel 复杂表头 表头校验 数据校验
目录 EasyExcel特点 一.导入excel案例 二.读取excel的相关技术点 1.读取excel的方式 2.读取sheet数量 3.指定从第几行开始读数据 三.导出excel 1.前端发起请求 ...
- EasyExcel 导入导出Excel文件
文章目录 写在前面 1.maven依赖 2.导入Excel文件 2.1.读取表格文件 2.2.如果有多个sheet表格 2.3.监听器封装(也可不封装) 2.4.读取数据格式化(实体类中添加注解) 3 ...
- Springboot 整合 easyexcel导入导出excel
1. 引入核心依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel< ...
- springboot整合easyexcel 导入导出excel案例及文件无法打开
前端请求 vue3+axios+typescript downloadByUrlStream({url:process.env.VUE_APP_API_URL1+"/MeshDevice/u ...
- POI和EasyExcel导入导出Excel表格
这里写自定义目录标题 EasyExcel操作Excel表格 一.导入依赖: 二.编写实体类 三.编写测试类 POI操作Excel表格 基本功能: 一.导入依赖 二.测试类 2.1 使用HSSFWork ...
- 使用EasyExcel导入导出Excel报表-JAVA解析Excel工具
一.EasyExcel概述 Java解析.生成Excel比较有名的框架有Apache poi.jxl.但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内 ...
- java sax 解析excel,使用EasyExcel导入导出Excel报表-JAVA解析Excel工具
1.EasyExcel概述 Java解析.生成Excel比较有名的框架有Apache poi.jxl.但他们都存在一个严重的问题就是很是的耗内存,poi有一套SAX模式的API能够必定程度的解决一些内 ...
最新文章
- tcpdump for Android 移动端抓包
- 使用Java让android手机自动执行重复重启
- OEM中无法用sys用户登录
- 内存溢出_JVM|03内存溢出实战
- Python pip切换为国内镜像源(亲测可用)
- 很酷的word技巧---删除行前的空格
- C#创建WinForm应用程序的入口点
- C#打印0到100的素数
- 生日快乐程序_祝肖战1005生日快乐-用R给他画个蛋糕爱心吧
- sql开启mysql远程连接_SQLServer2008设置开启远程连接
- Abstract Self-Balancing Binary Search Tree
- c语言竞赛成绩排序,吧内编程竞赛:成绩公布
- ASP.NET 4中的SEO改进
- deploy owned private docker registry based on docker HUB registry image
- linux中文件带方块,JFreeChart图片里的中文在linux下显示为方块的解决办法
- React ~ 生命周期
- ug冲模标准件库_UG标准件库|标准件库下载|3DSource零件库|海量CAD模型
- HTML5新增标签--canvas之绘制你画我猜
- #UML# Astah+Doxygen 将C++源码映射为类图
- awscli配置Access key ID和Secret access key