一、前言

小编最近接到一个导出Excel的需求,需求还是很简单的,只需要把表格展示的信息导出成Excel就可以了,也没有复杂的合并列什么的。

常见的导出Excel的技术:

  • hutool
  • easyExcel
  • poi

hutool和easyExcel都是对poi的封装,使用起来更加方便!由于公司都是使用EasyExcel进行导出,小编也不能特立独行。如果想看poi和hutool导出的可以看一下小编的之前写的文章:
使用POI+hutool导入Excel
使用POI把查询到的数据表数据导出到Excel中,一个表一个sheet
话不多说,咱们直接开始。

二、导入Maven依赖

<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.0.5</version>
</dependency>

特别注意:
这里的版本应该适当高一些,不然我们在导出时有日期是jdk8新特性LocalDateTime,会不支持的!
小编开始用的同事以前使用的2.几版本就出现不支持的问题,大家小心哈!!

三、编写导出实体类

@Data
@ColumnWidth(20)
public class Test implements Serializable {private static final long serialVersionUID = 337361630075002456L;@TableId(type= IdType.ASSIGN_ID)@ExcelProperty(value = "id",index = 0)private long id;@ExcelProperty(value = "名字",index = 1)private String name;@ExcelProperty(value = "性别",index = 2)private String gender;@ExcelProperty(value = "数据",index = 3)private String data;@ExcelProperty(value = "创建时间",index = 4)private LocalDateTime createDate;@ExcelProperty(value = "更新时间",index = 5)private LocalDateTime updateDate;}

参数解读:
@ExcelProperty:加在需要导出的字段上,value是导出表头展示的内容,如果不写则会按照字段名字来当做表头。
经过小编测试:导出的实体类,不加这个注解也会导出,不过表头为字段名字!!

@ColumnWidth(20):设置每一个表头的长度,加载类上就是全部都是这个长度,加在字段上就是一个表头的长度!

如果你需要合并的话,需要自己指定策略,继承extends AbstractCellWriteHandler 重写afterCellDispose,就可以了;这里小编就不展示了,等后面有这个需求在给大家详细教学一下哈!!

四、测试

小编为了方便直接在controller里完成了,大家不要学哈,业务在service里写比较规范哈!

@RestController
@RequestMapping("/test")
@Slf4j
@RequiredArgsConstructor
public class TestController {private final TestService testService;@NonNullprivate TestMapper testMapper;@SneakyThrows@GetMapping("/easyExcel")public void easyExcel (HttpServletResponse response){String fileName = new String("导出excel.xlsx".getBytes(), StandardCharsets.ISO_8859_1);response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf8");response.setHeader("Content-disposition", "attachment;filename=" + fileName );List<Test> list = testMapper.selectList(null);ServletOutputStream outputStream = response.getOutputStream();EasyExcel.write(outputStream, Test.class).sheet("sheet1").doWrite(list);}
}

如果对@RequiredArgsConstructor不了解的可以看一下小编的这篇文章!@RequiredArgsConstructor代替@Autowrired

五、浏览器测试

我们现在浏览器里访问,地址:http://localhost:8089/test/easyExcel

六、Postman测试

提醒:通常情况下我们在企业级开发时,都是需要登录验证的,这时我们无法通过浏览器进行访问测试,这时我们需要使用Postman进行测试,开始小编导出的都是一推乱码,后来小伙伴告诉我,导出不能直接Send,要点击下面的Send And Download。现在给大家演示一下哈:

七、查看导出文件

我们可以看到没有乱码哈!

八、总结

我们这样就完成了测试,成功的导出了Excel。本篇只是简单的进行导出测试,可能你们的需求要美化,详细参考官网:easyExcel官网


有缘人才可以看得到的哦!!!

点击访问!小编自己的网站,里面也是有很多好的文章哦!

EasyExcel导出Excel表格到浏览器,并通过Postman测试导出Excel【入门案例】相关推荐

  1. 前端自己导出excel表格 不需要调接口(可导出全部的数据)

    前端自己导出excel表格 不需要调接口(可导出全部的数据) 1.下载 npm install -S file-saver xlsx 2.把js放在对应的位置 全部复制(Export2Excel.js ...

  2. 阿里开源(EasyExcel):使用Java将数据导出为Excel表格、带样式----》java web下载 Excel文件

    目录 一.技术选型 二.实现过程 1.导入依赖 2.编写工具类 EasyExcelUtil 3.公用参数类 EasyExcelParams 4.表格样式实体类 MyWriteHandler 5.数据实 ...

  3. 表格导出计算机,电脑怎么导出excel表格数据-如何将百度指数数据导出到Excel表格...

    系统没有导出功能,电脑表格里的数据有什么方法拿... 将网页表格数据导入到Excel中的方法: 第一步,将包括所需表格的网页打开,并按CTRL C把网址复制到剪贴板,以备下一步使用. 第二步,打开运行 ...

  4. 如何将网页内容保存到计算机中,如何将网站导出excel表格数据-如何把网页数据保存到EXCEL...

    网页上的表格数据怎么复制到excel 1.打开excel表格. 2.打开菜单"数据->"导入外部数据"->"新建 Web 查询",在&qu ...

  5. java怎么导入到安卓手机,android导入excel表格数据-随手记记账记录如何导出到EXCEL(安卓版)...

    excel数据导入到android项目下的sqlite数据库中 把excel的数据读入到程序里. 这个就是用java读取excel的数据,百度一下就有很多成熟的例子. 把程序的数据存入sqllite里 ...

  6. html表格 数据库数据类型,html数据库excel表格设计-html table能不能显示类似excel的那种表格?...

    assess数据库一个表中有一列是html格式的,将数据... 是这样的效果吗? 无标题文档 table{ border:#303030 1px solid;border-collapse:colla ...

  7. postman测试导出Excel接口报错乱码

    最近有导出Excel的接口要测试,而且项目加了权限不方便在浏览器直接测试后端接口,于是在postman上测试导出Excel方法,直接点击Send按钮会生成一堆乱码: 后来折腾了好一会,才发现Send按 ...

  8. 如何将excel表格导入word_分享一种批量将Excel表格中联系方式导入至手机通讯录中的方法...

    今天看到有个做销售的小哥在头条问问上提到如何将Excel表格中的顾客号码批量导入至手机通讯录中,无奈条友们的层次果然很低,没有几个说出所以然的,现在我就分享一种方法导入一下. 首先打开QQ邮箱,点&q ...

  9. Java生成Excel表格数据的两种方式(Easy Excel和SXSSFWorkbook)以及测试方法

    一. 使用alibaba中的Easy Excel工具 在gradle文件中引入依赖 dependencies {implementation 'com.alibaba:easyexcel:3.2.0' ...

最新文章

  1. Error in plot.new() : figure margins too large
  2. java的hashmap排序_Java面试题:如何对HashMap按键值排序
  3. 在docker中构建普通java程序_Docker入门-构建第一个Java程序
  4. [Logstash-input-redis] 使用详解
  5. JVM:堆与栈的比较
  6. 计算机usb接口充电效率差,usb2.0和3.0的区别 从传输速度和充电效率等来区别
  7. 【转载】解决Windows和Ubuntu时间不一致的问题
  8. mock接口开发,excel(读,写,修改)
  9. 助教总结-【北京电子科技学院_2016-2017-2_程序设计与数据结构】
  10. Kernel Samepage Merging | 同页合并
  11. dlut-KFQ概率上机2
  12. 特斯拉扭亏,股价暴涨;马斯克下一步:进军打车业务
  13. NYOJ--40--公约数和公倍数
  14. Matlab里面如何实现多行注释
  15. 基于SBO程序开发框架的实例:仓库扩展属性设置
  16. [CTF]天下武功唯快不破
  17. 可闭环、可沉淀、可持续的企业级数据赋能体系
  18. 快速将非Word中的不可编辑的公式转换为Word文档中公式编辑器里可编辑的公式的办法
  19. 跑跑卡丁车蛋白石盒喜当托儿纪念,2022/06/12,22:59:24
  20. 搞嵌入式的,为啥要有uboot?

热门文章

  1. 按键精灵 android版运行异常,按键精灵安卓版 tap、touch命令 不好用的解决办法!...
  2. 翻译工作的重要性_为什么翻译平台很重要
  3. C++之 最大公约数求法
  4. Unity将当前场景渲染到图片上并导出图片(本地/服务器)
  5. 用Python写了一个网易云音乐(附源码、视频教程)
  6. Cocos2d-x 3.1.1 学习日志16--A星算法(A*搜索算法)学问
  7. Hyde And Hebbe
  8. jQuery的隐藏显示hide(),show()方法
  9. Wireshark菜单栏介绍之编辑菜单4-4
  10. 微信公众号使用:微信公众平台企业类型的微信认证申请流程