一、导出至Excel

1.导入依赖

导出方法需要使用到fastJson的依赖,这里也直接导入

点击查看代码
<!--阿里的easyexcel-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.0-beta1</version>
<scope>compile</scope>
</dependency>
<!-- 阿里fastjson包JSON转换-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>

2.准备导出数据

这里简单创建一个Student的实体类

在导出的数据中,要是不想有某个属性,可以在该属性上面添加@ExcelIgnore注解,

同样,若在导出的数据中想要某个属性,可以在该属性上面添加@ExcelProperty("姓名")注解

若在属性上面啥注解也没有,默认也是会导出该属性的数据,但是表头就是这个属性名。

点击查看实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student implements Serializable {
private static final long serialVersionUID = 1L; @ExcelProperty("Id")
private String id; @ExcelProperty("姓名")
private String name; @ExcelProperty("学号")
private String studentNo; @ExcelProperty("电话")
private String phone; @ExcelProperty("性别")
private Integer sex; @ExcelIgnore
private Integer age; private String h;
}

这里再简单编写一个service方法,模拟查询到的数据;

点击查看Service方法
import java.util.ArrayList;
import java.util.List; @Service
public class ExportExcelService { public List<Student> getData(){
Student student = new Student("001","张三","191026","13299998888",1,20,"1");
Student student1 = new Student("002","李四","191027","13299993333",0,20,"1");
Student student2 = new Student("003","王五","191028","13293338888",1,20,"1");
return new ArrayList<Student>(){{
add(student);
add(student1);
add(student2);
}};
}
}

3.编写controller方法

这里导出的方法就直接写在controller里了,从service查数据。

这里其实需要改动的就只有两个地方,一个就是导出数据集合的泛型,二是导出的数据集合。

EasyExcel.write(response.getOutputStream(), Student.class) .autoCloseStream(Boolean.FALSE) .sheet("导出详情") .doWrite(studentList);

点击查看代码
@RestController
@RequestMapping("/export")
public class ExportExcelController {
@Autowired
private ExportExcelService exportExcelService; @GetMapping("/")
public void export(HttpServletResponse response) throws IOException {
try {
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
// 这里URLEncoder.encode可以防止中文乱码
String fileName = URLEncoder.encode("导出", "UTF-8").replaceAll("\\+", "%20");
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
List<Student> studentList = exportExcelService.getData();
// 这里需要设置不关闭流
EasyExcel.write(response.getOutputStream(), Student.class)
.autoCloseStream(Boolean.FALSE)
.sheet("导出详情")
.doWrite(studentList);
} catch (Exception e) {
// 重置response
response.reset();
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
Map<String, String> map = new HashMap();
map.put("status", "failure");
map.put("message", "下载文件失败" + e.getMessage());
response.getWriter().println(JSON.toJSONString(map));
}
}
}

4.最后附上效果图

当然,默认的文件名,还有表头的宽高,数据一行的宽高都是可以设置的。都有相应的注解,加在实体类上就可以了,这里就简单逻辑几个:

设置表头的高度:@HeadRowHeight(20)

设置数据的高度:@ContentRowHeight(20)

设置数据的宽度:@ColumnWidth(25)

二、从Excel导入数据

1.依赖

导入和导出使用的依赖都是一样的,只是调用的方法不同,使用一中导入的依赖即可。

2.掉方法

    @SneakyThrows
@PostMapping("/")
@ApiOperation(value="导入")
public List<Student> importData(@RequestPart("file") MultipartFile file) {
List<Student> studentList = EasyExcel.read(file.getInputStream())
.head(Student.class)
.sheet()
.doReadSync();
return studentList;
}

3.测试

springboot使用EasyExcel,导出数据到Excel表格,并且将Excel表中数据导入的更多相关文章

  1. 使用Excel表格的记录单功能轻松处理工作表中数据的方法

    使用Excel表格的记录单功能轻松处理工作表中数据的方法 记录单是将一条记录分别存储在同一行的几个单元格中,在同一列中分别存储所有记录的相似信息段.使用记录单功能可以轻松地对工作表中的数据进行查看.查 ...

  2. python xlrd 模块(获取Excel表中数据)

    python xlrd 模块(获取Excel表中数据) 一.安装xlrd模块   到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了pyt ...

  3. mysql利用navicat导出表结构和表中数据

    LZ在网上搜索了要如何导出mysql的表结构和表中数据,发现有的方法不好用 记录一下好用的方式: 用navicat打开DB链接后,点击数据库,右击选择转储SQL文件,然后选择结构和数据: 之后弹出新的 ...

  4. pl/sql中误删表中数据并提交恢复办法

    最近在操作表中数据时,删除了表中数据,但是又想恢复,后来查到了官方的一篇文档,发现还蛮有用的,如下: 在pl/sql中运行,select * from A as of TIMESTAMP to_tim ...

  5. 我们在删除SQL Sever某个数据库表中数据的时候,希望ID重新从1开始,而不是紧跟着最后一个ID开始需要的命令

    一.如果数据重要,请先备份数据 二.删除表中数据 SQL: Delete From ('表名')  如:Delete From abcd 三.执行新语句 SQL: dbcc checkident('表 ...

  6. Oracle 取两个表中数据的交集并集差异集合

    Oracle 取两个表中数据的交集 关键字: Oracle 取两个表中数据的交集 INTERSECT Oracle 作为一个大型的关系数据库,日常应用中往往需要提取两个表的交集数据 例如现有如下表,要 ...

  7. MySQL查询数据表中数据记录(包括多表查询)

    MySQL查询数据表中数据记录(包括多表查询) 在MySQL中创建数据库的目的是为了使用其中的数据. 使用select查询语句可以从数据库中把数据查询出来. select语句的语法格式如下: sele ...

  8. 对lua表中数据按一定格式处理,循环

    function putStartCard(handCard) function dataDeal(array,a,b,c) cclog("进入datadeal=============== ...

  9. Mysql清空表(truncate)与删除表中数据(delete)的区别

    来源:http://blog.is36.com/mysql_difference_of_truncate_and_delete/ 为某基于wordpress搭建的博客长久未除草,某天升级的时候发现已经 ...

  10. db2删除表中数据

    DB2数据库系统建表后,难免会有将表中数据清空的需求,本文将为您介绍DB2数据库中四种数据删除的方法,供您参考,您可以根据实际情况来进行选择,希望能对有所帮助. 1. 使用 DELETE 语句,即: ...

随机推荐

  1. Python基础之模块:5、 第三方模块 requests模块 openpyxl模块

    目录 一.第三方模块的下载与使用 1.什么是第三方模块 2.如何安装第三方模块 方式一:pip工具 方式二:pycharm中下载 3.注意事项 1.报错并有警告信息 2.报错,提示关键字 3.报错,无 ...

  2. 小菜鸡的学习笔记---<正则表达式(1)>

    正则表达式学习笔记(1) (纯新手学习笔记,大佬绕路 QAQ) 一.简介 正则表达式就是一种文本模式用来匹配一系列满足特定条件的字符串,可以对比一下数学里面的表达式,比如我们要用一个表达式表示一串数字 ...

  3. MongoDB导入导出备份数据

    需要提前安装mongodb-database-tools参考:centos离线安装mongodb-database-tools 导出数据 常用的导出有两种:mongodump和mongoexport, ...

  4. 面试官不按套路,竟然问我Java线程池是怎么统计线程空闲时间?

    背景介绍: 你刚从学校毕业后,到新公司实习,试用期又被毕业,然后你又不得不出来面试,好在面试的时候碰到个美女面试官! 面试官: 小伙子,我看你简历上写的项目中用到了线程池,你知道线程池是怎样实现复用线 ...

  5. windows安装wsl,在windows中使用ubuntu

    WSL(Windows Subsystem for Linux)即适用于 Linux 的 Windows 子系统,它是随 Windows 操作系统一起提供. WSL是windows操作系统的子系统,算 ...

  6. PEP8语法规范解释说明

    PEP8规范解析 内容概要: 1.PEP8规范是什么? 2.PEP8相关内容 1.PEP8规范是什么 PEP是Python Enhancement Proposal的缩写,翻译为:"Pyth ...

  7. java:绘制图形

    java绘图类:Graphics类 绘图是高级程序中必备的技术,在很多方面都能用到,如:绘制闪屏图片,背景图片和组件外观等. 1.Graphics类 Graphics类是所有图形上下文的抽象基类,Gr ...

  8. jquery 简单分页插件jQuerypage

    昨天项目手机端要用到table的分页,考虑到手机端界面小,系统数据不多,在没考虑大批量数据处理的前提前就下载了这个插件,简单. 展示数据datas为json格式. <!DOCTYPE html& ...

  9. iNeuOS工业互联网操作系统,脚本化实现设备运行时长和效率计算与统计

    目       录 1.      概述... 2 2.      实时采集开停状态... 2 3.      增加虚拟设备... 2 4.      脚本统计和计算设备运行时长... 4 5.    ...

  10. Vue 打包报错UnhandledPromiseRejectionWarning: postcss-svgo: Error in parsing SVG

    解决方案 检查下自己最新写的css 或者最新引入的样式库,把里面的base64的url替换成双引号形式的 PS:我这报错是因为引入的weui.min.css里面的loading样式的`backgrou ...