文章目录

  • 导入功能
    • 依赖
    • 实体类
    • 监听器
    • 控制器
    • 批量插入
  • 导出功能
  • 下载模板
    • 实体类
    • 控制层
    • 业务层

参考: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的导入、导出、下载模板等功能相关推荐

  1. EasyExcel实现Excel文件导入导出

    1 EasyExcel简介 EasyExcel是一个基于Java的简单.省内存的读写Excel的开源项目.在尽可能节约内存的情况下支持读写百M的Excel. github地址: https://git ...

  2. 使用EasyExcel实现Excel的导入导出

    文章目录 前言 一.EasyExcel是什么? 二.使用步骤 1.导入依赖 2.编写文件上传配置 3.配置表头对应实体类 4.监听器编写 5.控制层 6.前端代码 总结 前言 在真实的开发者场景中,经 ...

  3. EasyExcel导入导出下载模板(带下拉)

    EasyExcel导入导出网上资料很多,这里就不多做描述了,总之就是一款比较轻而小,易用的excel操作工具包:这里在项目中使用到,做下笔记.以及表格中下拉框的实现: 声明:本文思路是借鉴于某大神的, ...

  4. ant Desgin vue 导入 导出 下载模板

    先说导入吧, 首先 我们先发请求 代码如下: 按照自己的接口发请求,因为我这个用的是封装的, 因为我这个请求是总导入,好多个用一个,所以我们定义importType类型,来区分 //导入档案总 exp ...

  5. 帝国cms如何导入php模板,帝国cms模板导入导出及模板组功能介绍

    为了使网站能随心所欲更换风格与共享模板,EmpireCMS引入了模板组功能. 模板组的三大主要功能: 1.模板导出与导入,模板共享更加方便. 2.多模板并存. 3.随时更换网站模板. 4.单个ECMS ...

  6. EasyExcel实现Excel文件导入导出功能

    一.EasyExcel简介 Java领域解析.生成Excel比较有名的框架有Apache poi.jxl等.但他们都存在一个严重的问题就是非常的耗内存.如果你的系统并发量不大的话可能还行,但是一旦并发 ...

  7. 使用easyexcel进行excel的导入和导出(web)

    使用easyexcel进行excel的导入和导出(web) 前言:使用springboot,mybatis,excel3.x.x,通用mapper.本文主要演示怎么使用easyexcel,因此先展示效 ...

  8. EasyPoi实现excel文件导入导出

    EasyPoi学习实践 1 简介 easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板 ...

  9. [Java中实现Excel表导入导出]基于easy-poi和EasyExcel两种方式实现

    第一种:基于easy-poi实现Excel导入导出 1.导出Excel表格 第一步:在pom文件中导入依赖 <!--基于easy-poi实现Excel导入导出--><dependen ...

最新文章

  1. 保姆级教程,手把手教你实现一个SpringBoot的starter
  2. ABP理论学习之工作单元(Unit of Work)
  3. 为什么说 Java 中只有值传递?
  4. echart 折线图设置y轴单位_echarts折线图有两个图例时如何实现分别采用两个不同单位的y轴...
  5. MySQL 四种事务隔离级别详解及对比--转
  6. MMdetection安装使用(1)
  7. android5.1 PowerManagerService和DisplayPowerControler、DisplayPowerState关系
  8. spring3: 表达式5.2 SpEL基础
  9. 西电计算机网络ppt,《西安电子科技大学》PPT课件
  10. java jar在电脑哪里_例举jar文件怎么打开
  11. 世界坐标系和相机坐标系,图像坐标系的关系
  12. 30种常用管理工具模型整理分享(下)
  13. 2020华为外包机试题目
  14. vue 不是内部或外部命令
  15. 计算机进制之间的转换(2进制、10进制、8进制、16进制)
  16. MSP430F149 微安级低功耗模式设置总结
  17. CodeForces 417D Cunning Gena 状压dp
  18. 5、passcode
  19. OC继承详解与使用规则
  20. 下一代局域网 专家考虑改变企业网络环境

热门文章

  1. java中常见的设计模式有那些?
  2. gensim简单使用
  3. JavaScript对象、基本类型和字面值之间的区别
  4. POLYWORKS案例:MTU航空发动机 - 最前沿的机翼检测技术
  5. stick棍子by Ye
  6. 锤炼腹肌的好方法:健腹轮的折叠刀式俯卧撑
  7. CentOS上安装Docker及docker常用命令
  8. MATLAB 棋盘格图片校准
  9. 云计算--day07
  10. MIUI通知类短信权限的坑