SpringBoot进阶教程(八十五)最简洁的excel导出

打印 上一主题 下一主题

主题 1652|帖子 1652|积分 4956

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。它能让你在不消思量性能、内存的等因素的情况下,快速完成Excel的读、写等功能。本日我们就快速实现一个excel的导出。非常简洁。
v添加引用
  1. <dependency>
  2.        <groupId>com.alibaba</groupId>
  3.        <artifactId>easyexcel</artifactId>
  4.        <version>2.1.6</version>
  5. </dependency>
复制代码
v实体类加注解
  1. @Data
  2. public class Info {
  3.     @ExcelProperty("编号")
  4.     private int id;
  5.     @ExcelProperty("名称")
  6.     private String name;
  7. }
复制代码
如果是直接导出字段名作为列明,这一步可以省略。
v导出接口

将响应数据设置为excel格式。写入数据。Easyexcle提供了API供用户利用,只需要一行代码就能够将List列表转化为Excel文件。write方法指定输出流和写入数据的class对象;sheet方法指定excel的sheet名称;doWrite则指定写入的列表数据。
  1.     @GetMapping("excel")
  2.     public void excel(HttpServletResponse response) {
  3.         try {
  4.             // 准备数据
  5.             List<Info> infoList = infoService.getInfoList();
  6.             if(!CollectionUtils.isEmpty(infoList)) {
  7.                 // 设置响应
  8.                 response.setContentType("application/vnd.excel");
  9.                 response.setCharacterEncoding("utf-8");
  10.                 String fileName = URLEncoder.encode("file" + LocalDate.now(), "UTF-8").replaceAll("\\+", "%20");
  11.                 response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
  12.                 // 写入数据
  13.                 EasyExcel.write(response.getOutputStream(), AnchorData.class).sheet("sheet1").doWrite(infoList);
  14.             }
  15.         } catch (Exception e) {
  16.             e.printStackTrace();
  17.         }
  18.     }
复制代码
这里直接哀求excel接口就可以下载了,效果比力简单直接,这里就不截图了。
v源码地点

https://github.com/toutouge/javademosecond/tree/master/hellolearn

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

滴水恩情

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表