利用EasyExecl对execl进行导入导出

EasyExecl官方文档: https://www.yuque.com/easyexcel/doc/easyexcel

一、前言

这是我写的一个EasyExecl对execl进行导入导出的一个demo,他不像原生的Execl导入导出那样,它实现的代码比较简洁,它本身的类封装了导入导出的方法。

1.1 以下网址是鄙人的github仓库,存放着自己的技术代码demo,如有错误,还请各位大佬指正!!!

该项目完整代码地址: https://github.com/Java567/TechnologyDemo

1.2 结果视频演示

easyexecl导入导出

二、准备工作

  • 编译器:idea 2019.3.3版本
  • 数据库:mysql—8的版本
  • 插件:lombok(简化实体类的编写)

2.1 导入的execl表和sql表的模板

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fSytwMTL-1614518387501)(D:\github项目\技术demo\图片\1.png)]

2.2 所需的pom依赖

2.2.1 swagger2的依赖(后端生成api接口文档)

<!--集成API接口文档的生成swagger2-->
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version>
</dependency>
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.9.2</version>
</dependency>

2.2.2 lombok的依赖

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional>
</dependency>

2.2.3 easypoi依赖

<!--Easyexcel-->
<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.7</version>
</dependency>

三、代码实现

3.1 实体类编写

package com.lj.model;import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;import java.io.Serializable;
import java.util.Date;/*** @description: 报告厅基本信息实体类* @author: LiJun* @date: Created in 2021/2/15 20:42*/
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "Auditorium", description = "报告厅模型")
public class Auditorium implements Serializable {@ExcelIgnore@ApiModelProperty("报告厅主键")private Integer auditoriumId;@ExcelProperty("报告厅名称")@ApiModelProperty("报告厅名称")private String auditoriumName;@ExcelProperty("正在使用者")@ApiModelProperty("正在使用者")private String username;@ExcelProperty("所属楼层编号")@ApiModelProperty("所属楼层编号")private Integer floorId;@ExcelProperty("所属楼栋编号")@ApiModelProperty("所属楼栋编号")private Integer buildId;@ExcelProperty("所属校区编号")@ApiModelProperty("所属校区编号")private Integer campusId;@ExcelProperty("报告厅面积")@ApiModelProperty("报告厅面积")private Integer auditoriumArea;@ExcelProperty("可容纳人数")@ApiModelProperty("可容纳人数")private Integer auditoriumCapacity;@ExcelProperty("状态(是否空闲)")@ApiModelProperty("状态(是否空闲)")private String auditoriumState;@ExcelProperty("详情介绍")@ApiModelProperty("详情介绍")private String auditoriumDetail;@ExcelProperty("报告厅添加时间")@ApiModelProperty("报告厅添加时间")@JsonProperty("auditorium_create_time")@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GTM+8")private Date auditoriumCreateTime;
}

3.2 持久层编写

3.2.1 mapper.xml编写

<?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="com.lj.dao.AuditoriumDAO"><select id="getAllAuditorium" resultType="Auditorium">SELECT * FROM `Auditorium`;</select><insert id="save" parameterType="java.util.List">INSERT INTO `Auditorium`(`auditorium_name`, `username`, `floor_id`, `build_id`, `campus_id`, `auditorium_area`,`auditorium_capacity`, `auditorium_state`, `auditorium_detail`)VALUES<foreach collection="list" separator="," item="item" close=";">(#{item.auditoriumName}, #{item.username}, #{item.floorId}, #{item.buildId}, #{item.campusId},#{item.auditoriumArea},#{item.auditoriumCapacity}, #{item.auditoriumState}, #{item.auditoriumDetail})</foreach></insert>
</mapper>

3.2.2 dao层接口编写

package com.lj.dao;import com.lj.model.Auditorium;
import org.springframework.stereotype.Repository;import java.util.List;/*** @description:* @author: LiJun* @date: Created in 2021/2/16 20:04*/
@Repository
public interface AuditoriumDAO {/*** 得到表信息*/List<Auditorium> getAllAuditorium();/*** 保存至数据库*/void save(List<Auditorium> list);
}

3.3 业务层编写(简单,省略不写,项目完整代码见github代码仓库网址)

3.4 控制层编写

package com.lj.controller;import com.alibaba.excel.EasyExcel;
import com.lj.common.config.AuditoriumDataListener;
import com.lj.model.Auditorium;
import com.lj.service.AuditoriumService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;/*** @description:* @author: LiJun* @date: Created in 2021/2/16 20:04*/
@RestController
@RequestMapping("Auditorium")
@Api(tags = "Auditorium报告厅相关的API接口")
public class AuditoriumController {@Resourceprivate AuditoriumService auditoriumService;/*** 数据导入*/@ResponseBody@PostMapping("/loadIn")@ApiOperation(value="execl数据导入接口", notes = "execl数据导入到对应的报告厅数据库表")public void loadIn(@RequestParam("file") MultipartFile file) throws IOException {EasyExcel.read(file.getInputStream(),Auditorium.class,new AuditoriumDataListener(auditoriumService)).sheet().doRead();}/*** 导出house信息,需要用浏览器测试,"application/vnd.ms-excel;charset=utf-8"* @param response* @return* @throws IOException*/@ResponseBody@GetMapping("/loadOut")@ApiOperation(value="execl导出Auditorium接口", notes = "导出Auditorium表里的数据并生成可以下载的execl表")public Integer loadOut(HttpServletResponse response) throws IOException{List<Auditorium> list = auditoriumService.getAllAuditorium();String fileName = new String("Auditorium.xlsx".getBytes("utf-8"), "ISO-8859-1");if (list.isEmpty()){return 0;} else {// 请求头response.setContentType("application/vnd.ms-excel;charset=utf-8");response.setHeader("Content-Disposition", "attachment;filename=" + fileName);response.flushBuffer();response.setCharacterEncoding("UTF-8");//导出execlEasyExcel.write(response.getOutputStream(),Auditorium.class).sheet("Auditorium").doWrite(list);return 1;}}
}

四、运行结果

4.1 项目启动后访问地址

http://localhost:8080/swagger-ui.html

4.2 运行项目截图

利用EasyExecl对execl进行导入导出相关推荐

  1. 蓄力-利用POI进行excel的导入导出(包含图片)

    这里写自定义目录标题 利用POI进行excel的导入导出 引入的jar包 excel导入 主方法: 将excel里面的图片转成数据 xls格式 xlsx格式 将图片数据转成字节流的方式传输到FTP服务 ...

  2. 利用外部命令Oralce数据库导入导出

    1--数据库导出(exp) 首先进入命令行 导出数据库 在命令行中输入如下命令: exp   c2j/c2j@c2j file=c:/table.dmp tables=jbitaku,jbitakum ...

  3. 利用sqoop将hive数据导入导出数据到mysql

    http://niuzhenxin.iteye.com/blog/1726414 运行环境  centos 5.6   hadoop  hive sqoop是让hadoop技术支持的clouder公司 ...

  4. ASP连EXECL及导入导出ACCESS操作SQL

    一:ASP连结EXECEL[SQL 操作EXCEL] <% dim conn set conn=server.createobject("adodb.connection") ...

  5. 利用Python进行数据分析——数据导入导出

    一.数据导入 (一)读取CSV文件 1.读取本地CSV #先创建一个CSV文件,存入数据,数据之间以"逗号"分割.  数据源来源于网络. import pandas as pd d ...

  6. 利用PHPExcel实现数据的导入导出

    PHPExcel 是用来操作Office Excel 文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言.可以使用它来读取.写入不同格式的电子表格.整体来说是一个不错的Excel操作类. ...

  7. PHP利用phpExcel实现Excel数据的导入导出

    phpExcel包的下载地址:http://download.csdn.net/detail/kesixin/9920920 首先先说一下,这段例程是使用在Thinkphp的开发框架上,要是使用在其他 ...

  8. 关于64位 MS SQL 导入导出 Oracle 引发 ORA-06413 的解决方法

    如果在X64系统下我们想利用 MS SQL 的DTS导入导出 Oracle 数据,由 oracle 不支持路径中包含")",会引发 ORA-06413:连接未打开错误 解决的办法很 ...

  9. developer工具oracle导出,[转]PL/SQLDeveloper导入导出Oracle数据库方法

    1.Oracle数据库导出步骤 1.1 Tools→Export User Objects...选项,导出.sql文件. 说明:此步骤导出的是建表语句(包括存储结构),不包括表中的数据,要导出数据需要 ...

最新文章

  1. OkHttp简化请求封装思路
  2. ITK:对多个线程上的数据进行操作以利用多核处理器
  3. ES6_有关数组的函数_note
  4. Spring Boot RabbitMQ 详解
  5. c语言中{的作用,C语言中Static和Const关键字的作用
  6. android intent sender,Android7.0以上调PendingIntent.getIntent()报错
  7. Oracle 开放源代码项目
  8. 《软件工程》团队第一阶段Sprint检查表
  9. 数字通信原理笔记(一)---概述
  10. python对象转为字符串
  11. rslogix5000pide实例_用RSLogix5000梯形图实现一种高级PID运算
  12. 魅族 android版本升级,魅族系统更新APP
  13. 使用量产工具合并U盘空间一例
  14. 复制pdf文字到word
  15. level2行情对炒股有什么帮助?
  16. 我们如何走到今天:重塑世界的6项创新
  17. nodejs中的事件events
  18. 为什么有那么多编码员音乐家?
  19. 微信小程序下载文件至本地,并打开文档
  20. wbarb matlab,图像的高频低频分解

热门文章

  1. DCDC变换器设计与磁学基础
  2. 美业SaaS的创业分享之[策略]:用免费换流量并不是一个好主意
  3. 南京大学计算机学院2019调剂,南京大学2019年硕士研究生招生接收调剂公告
  4. 大学计算机等级考试有毕业清考吗,教育部:坚决取消本科毕业前补考等“清考”行为 大学挂科会计入档案吗?...
  5. 计算机毕业设计ssm慢性病个人管理系统466cs系统+程序+源码+lw+远程部署
  6. 通通的最后一篇博客(附自制html5平面射击小游戏一枚)
  7. 净利润同比增长48.9%,中国平安“一览众山小”
  8. solr自动增量更新
  9. 学点实用工作小技巧【Python】汉字转拼音、繁体字和简体字互转、提取字符串中的中文(英文)、判断是否纯中文(英文)
  10. RDC如何构建一个基于NodeJS的前后端项目