使用EasyExcel实现Excel的导入、导出、下载模板等功能
文章目录
- 导入功能
- 依赖
- 实体类
- 监听器
- 控制器
- 批量插入
- 导出功能
- 下载模板
- 实体类
- 控制层
- 业务层
参考:https://blog.csdn.net/z845910508/article/details/123679054
导入功能
依赖
在项目的pom文件导入easyexcel的依赖:
<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.1.1</version></dependency>
实体类
创建与数据库表对应的实体类,并且添加与excel表头对应的注解@ExcelProperty
,要记得修改下面index的值:value对应excel的表头字段名称,index为表头顺序
import com.alibaba.excel.annotation.ExcelProperty;import lombok.Data;@Data
public class Entity {//这里的value对应excel的表头字段名称,index为表头顺序@ExcelProperty(value = "名称1",index = 0)private String name1;@ExcelProperty(value = "名称2",index = 1)private String name2;
}
监听器
//监听器
public class ExcelListener extends AnalysisEventListener<Entity> {MyService myService;List<Entity> list = new ArrayList<>();public ExcelListener (MyService myService){this.myService= myService;}//读取除表头外的每行数据执行该方法@Overridepublic void invoke(Entity entity, AnalysisContext context) {list.add(entity);}//读取结束执行该方法@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {//把与数据库重复的数据删除List<Entity> entityList = myService.queryListByExcel(list);for (Entity entity : entityList ) {list.remove(entity);}//保存到数据库中myService.saveList(list);}
}
控制器
//控制器@PostMapping("/import")@ApiOperation("数据导入")public String easyExeclImport(@RequestParam(value = "file") MultipartFile file) throws IOException {InputStream inputStream = file.getInputStream();//service要通过参数传进去EasyExcel.read(inputStream, Entity.class, new NbqExcelListener(myService)).sheet().doRead();return "success";}
批量插入
示例
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.demo.mapper.MedicnesMapper"><insert id="saveMedicnesList" parameterType="cn.demo.entity.Medicnes">insert into medices(food,remark)values<foreach collection="list" item="rm" separator=",">(#{rm.food},#{rm.remark})</foreach></insert>
</mapper>
导出功能
EasyExcel实现Excel文件导入导出
easyexcel导出
EasyExcel导出详解
public static void main(String[] args) {String filename = "D:\\linshi\\excel\\test1.xlsx";//准备要写入excel的数据List<TerminalEntity> list = new ArrayList<>();for (int i = 0; i < 5; i++) {TerminalEntity entity = new TerminalEntity();entity.setImei(i + "");entity.setCustomer("customer");list.add(entity);}// 向Excel中写入数据EasyExcel.write(filename, TerminalEntity.class).sheet("终端信息").doWrite(list);}
下载模板
实体类
@Data
public class TerminalInfoExcelBean {@ExcelProperty(value = "IMEI",index = 0)private String imei;@ExcelProperty(value = "TYPE",index = 1)private String type;@ExcelProperty(value = "VENDOR",index = 2)private String vendor;
}
控制层
@ApiOperation("下载Excel模板")@RequestMapping(value = "/downloadExcel",method = RequestMethod.GET)public CommonResult<String> easyExcelDownload(HttpServletResponse response) throws IOException {slaTerminalMonitorService.easyExcelDownload(response);return CommonResult.success(null, "下载Excel模板成功!");}
业务层
/*** 下载excel模板* @param response*/public void easyExcelDownload(HttpServletResponse response) throws IOException {List<TerminalInfoExcelBean> list = new ArrayList<>();TerminalInfoExcelBean bean = new TerminalInfoExcelBean();bean.setImei("111");bean.setType("摄像头");bean.setModel("C920");list.add(bean);// 这里URLEncoder.encode可以防止中文乱码 easyexcel没有关系String fileName = URLEncoder.encode("数据表格模板", "UTF-8");response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");EasyExcel.write(response.getOutputStream(), TerminalInfoExcelBean.class).sheet("模板").doWrite(list);}
使用EasyExcel实现Excel的导入、导出、下载模板等功能相关推荐
- EasyExcel实现Excel文件导入导出
1 EasyExcel简介 EasyExcel是一个基于Java的简单.省内存的读写Excel的开源项目.在尽可能节约内存的情况下支持读写百M的Excel. github地址: https://git ...
- 使用EasyExcel实现Excel的导入导出
文章目录 前言 一.EasyExcel是什么? 二.使用步骤 1.导入依赖 2.编写文件上传配置 3.配置表头对应实体类 4.监听器编写 5.控制层 6.前端代码 总结 前言 在真实的开发者场景中,经 ...
- EasyExcel导入导出下载模板(带下拉)
EasyExcel导入导出网上资料很多,这里就不多做描述了,总之就是一款比较轻而小,易用的excel操作工具包:这里在项目中使用到,做下笔记.以及表格中下拉框的实现: 声明:本文思路是借鉴于某大神的, ...
- ant Desgin vue 导入 导出 下载模板
先说导入吧, 首先 我们先发请求 代码如下: 按照自己的接口发请求,因为我这个用的是封装的, 因为我这个请求是总导入,好多个用一个,所以我们定义importType类型,来区分 //导入档案总 exp ...
- 帝国cms如何导入php模板,帝国cms模板导入导出及模板组功能介绍
为了使网站能随心所欲更换风格与共享模板,EmpireCMS引入了模板组功能. 模板组的三大主要功能: 1.模板导出与导入,模板共享更加方便. 2.多模板并存. 3.随时更换网站模板. 4.单个ECMS ...
- EasyExcel实现Excel文件导入导出功能
一.EasyExcel简介 Java领域解析.生成Excel比较有名的框架有Apache poi.jxl等.但他们都存在一个严重的问题就是非常的耗内存.如果你的系统并发量不大的话可能还行,但是一旦并发 ...
- 使用easyexcel进行excel的导入和导出(web)
使用easyexcel进行excel的导入和导出(web) 前言:使用springboot,mybatis,excel3.x.x,通用mapper.本文主要演示怎么使用easyexcel,因此先展示效 ...
- EasyPoi实现excel文件导入导出
EasyPoi学习实践 1 简介 easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板 ...
- [Java中实现Excel表导入导出]基于easy-poi和EasyExcel两种方式实现
第一种:基于easy-poi实现Excel导入导出 1.导出Excel表格 第一步:在pom文件中导入依赖 <!--基于easy-poi实现Excel导入导出--><dependen ...
最新文章
- 保姆级教程,手把手教你实现一个SpringBoot的starter
- ABP理论学习之工作单元(Unit of Work)
- 为什么说 Java 中只有值传递?
- echart 折线图设置y轴单位_echarts折线图有两个图例时如何实现分别采用两个不同单位的y轴...
- MySQL 四种事务隔离级别详解及对比--转
- MMdetection安装使用(1)
- android5.1 PowerManagerService和DisplayPowerControler、DisplayPowerState关系
- spring3: 表达式5.2 SpEL基础
- 西电计算机网络ppt,《西安电子科技大学》PPT课件
- java jar在电脑哪里_例举jar文件怎么打开
- 世界坐标系和相机坐标系,图像坐标系的关系
- 30种常用管理工具模型整理分享(下)
- 2020华为外包机试题目
- vue 不是内部或外部命令
- 计算机进制之间的转换(2进制、10进制、8进制、16进制)
- MSP430F149 微安级低功耗模式设置总结
- CodeForces 417D Cunning Gena 状压dp
- 5、passcode
- OC继承详解与使用规则
- 下一代局域网 专家考虑改变企业网络环境