EasyExcel使用
将下面三层结合起来,请放心食用。
一、controller层
- @RestController
- public class EasyExcelController
- {
- private Logger logger = LogManager.getLogger(EasyExcelController.class);
- @RequestMapping(value = "/Download")
- public void testExcelDownload(HttpServletResponse response)
- {
- //实际项目中,personList可以从数据库查出或者前端传过来
- //在这里用于测试
- List<Person> personList = new ArrayList<>();
- for (int i = 1; i < 5; i++)
- {
- Person person = new Person();
- person.setId(i);
- person.setName(i + "号杰瑞");
- person.setAge(i);
- person.setAddress(i + "号石华街");
- person.setDate(new Date());
- personList.add(person);
- }
- try
- {
- String fileName = "数据"; // Excel文件名称
- String sheetName = "欢乐番茄"; // 工作簿名称
- EasyExcelUtil.writeExcel(response, personList, fileName, sheetName, Person.class);
- }
- catch (Exception e)
- {
- logger.error("模板下载失败", e);
- }
- }
- }
二、工具类
- public class EasyExcelUtil
- {
- public static OutputStream getOutputStream(String fileName, HttpServletResponse response)
- throws Exception
- {
- try
- {
- fileName = URLEncoder.encode(fileName, "utf-8");
- response.setContentType("application/vnd.ms-excel");
- response.setCharacterEncoding("utf-8");
- // 此处指定了文件类型为xls,如果是xlsx的,请自行替换修改
- response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ".xls");
- response.setHeader("Pragma", "public");
- response.setHeader("Cache-Control", "no-store");
- response.addHeader("Cache-Control", "max-age=0");
- return response.getOutputStream();
- }
- catch (IOException e)
- {
- throw new Exception("导出文件失败!");
- }
- }
- public static void writeExcel(HttpServletResponse response, List list, String fileName,
- String sheetName, Class clazz)
- throws Exception
- {
- ExcelWriter writer = new ExcelWriter(getOutputStream(fileName, response), ExcelTypeEnum.XLS);
- Sheet sheet = new Sheet(1, 0, clazz);
- sheet.setSheetName(sheetName);
- writer.write(list, sheet);
- writer.finish();
- }
- }
三、实体类
- @Data
- //自定义标题行高
- @HeadRowHeight(30)
- //自定义标题字体大小 默认14
- @HeadFontStyle(fontHeightInPoints = 15)
- //自定义文本内容行高
- @ContentRowHeight(20)
- //自定义文本字体大小 默认14
- @ContentFontStyle(fontHeightInPoints = 10)
- public class Person
- {
- //忽略这个字段
- @ExcelIgnore
- private Integer id;
- @ExcelProperty({"数据统计", "姓名"})
- private String name;
- @ExcelProperty({"数据统计", "年龄"})
- private Integer age;
- @ExcelProperty({"数据统计", "家庭地址"})
- @ColumnWidth(15)
- private String address;
- //默认 yyyy-MM-dd HH:mm:ss 可以使用DateTimeFormat自定义日期格式
- @DateTimeFormat("yyyy年MM月dd日")
- //自定义列宽
- @ColumnWidth(15)
- @ExcelProperty("日期")
- private Date date;
- public Date getDate()
- {
- return date;
- }
- public void setDate(Date date)
- {
- this.date = date;
- }
- public Integer getId()
- {
- return id;
- }
- public void setId(Integer id)
- {
- this.id = id;
- }
- public String getName()
- {
- return name;
- }
- public void setName(String name)
- {
- this.name = name;
- }
- public Integer getAge()
- {
- return age;
- }
- public void setAge(Integer age)
- {
- this.age = age;
- }
- public String getAddress()
- {
- return address;
- }
- public void setAddress(String address)
- {
- this.address = address;
- }
- @Override
- public String toString()
- {
- return "Person{" +
- "id=" + id +
- ", name='" + name + '\'' +
- ", age=" + age +
- ", address='" + address + '\'' +
- ", date=" + date +
- '}';
- }
- }
POM依赖
- <!--ali-->
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>easyexcel</artifactId>
- <version>2.2.7</version>
- </dependency>
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- <version>1.18.12</version>
- </dependency>
EasyExcel使用的更多相关文章
- 阿里巴巴excel工具easyexcel 助你快速简单避免OOM
Java解析.生成Excel比较有名的框架有Apache poi.jxl.但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有 ...
- easyExcel导出excel的简单使用
easyExcel导出excel的简单使用 Java解析.生成Excel比较有名的框架有Apache poi.jxl.但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定 ...
- 阿里 EasyExcel 使用及避坑
github地址:https://github.com/alibaba/easyexcel 原本在项目中使用EasyPoi读取excel,后来为了统一技术方案,改用阿里的EasyExcel.EasyE ...
- EasyExcel导入工具(SpringMVC下使用)
easyExcel:由阿里巴巴公司开发,由github托管 github上有详细使用文档 github地址:https://github.com/alibaba/easyexcel/blob/mast ...
- 阿里 EasyExcel 7 行代码优雅地实现 Excel 文件生成&下载功能
欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 资深架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...
- Excel解析easyexcel工具类
Excel解析easyexcel工具类 easyexcel解决POI解析Excel出现OOM <!-- https://mvnrepository.com/artifact/com.alibab ...
- easyexcel 读写测试
<dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId> ...
- EasyExcel 轻松灵活读取Excel内容
写在前面 Java 后端程序员应该会遇到读取 Excel 信息到 DB 等相关需求,脑海中可能突然间想起 Apache POI 这个技术解决方案,但是当 Excel 的数据量非常大的时候,你也许发现, ...
- 【软件工具】easyExcel简明使用指南
easyExcel简介 Java领域解析.生成Excel比较有名的框架有Apache poi.jxl等.但他们都存在一个严重的问题就是非常的耗内存.如果你的系统并发量不发的话可能还行,但是一旦并发上来 ...
- Excel映射到实体-easyexcel工具
来源 项目需要把Excel进行解析,并映射到对象属性,实现类似Mybatis的ORM的效果.使用的方式是自定义注解+POI,这种方式代码复杂而且不易于维护. easyexcel是阿里巴巴开源的一个框架 ...
随机推荐
- vite初使用随记
vite的安装 按照官网文档来看,并不难. 先检查自己电脑node的版本与npm的版本/yarn的版本 可以直接用yarn安装,yarn create vite 这是最原始的安装,即类似于安装vue- ...
- Vim 中进行文本替换
Vim 中进行文本替换 格式 用法 :[range]s/from/to/[flags] tips: [] 表示该内容可选 参数 from 需要替换的字符串(可以是正则表达式) to 替换后的字符串 r ...
- 【大话云原生】煮饺子与docker、kubernetes之间的关系
云原生的概念最近非常火爆,企业落地云原生的愿望也越发强烈.看过很多关于云原生的文章,要么云山雾罩,要么曲高和寡. 所以笔者就有了写<大话云原生>系列文章的想法,期望用最通俗.简单的语言说明 ...
- C++ 类成员指针
C++的类成员指针是一种奇葩的指针. 假设现在我们要表示一个三维的点,现在有两种定义方式: struct point1{ int x, y, z; }; struct point2{ int c[3] ...
- Visual Studio之安装(更新,扩展)速度缓慢解决方案
一.背景 小伙伴们在安装visual studio,或者更新,扩展vs功能时,在家里网速正常的情况下,可能出现进度十分缓慢的问题,如何解决呢? 二.解决思路 修改hosts文件 1.地址:默认安装在 ...
- 《手把手教你》系列基础篇(九十五)-java+ selenium自动化测试-框架之设计篇-java实现自定义日志输出(详解教程)
1.简介 前面宏哥一连几篇介绍如何通过开源jar包Log4j.jar.log4j2.jar和logback实现日志文件输出,Log4j和logback确实很强大,能生成三种日志文件,一种是保存到磁盘的 ...
- FinOps for Kubernetes - 如何拆分 Kubernetes 成本
本文独立博客阅读地址:https://thiscute.world/posts/finops-for-kubernetes/ 目录 云计算成本管控 Kubernetes 成本分析的难点 Kuberne ...
- .NET Core 企业微信消息推送
接口定义 应用支持推送文本.图片.视频.文件.图文等类型.请求方式:POST(HTTPS)请求地址: https://qyapi.weixin.qq.com/cgi-bin/message/send? ...
- Linux系统句柄优化
Linux系统句柄介绍 文件句柄,会随着进程数增加而增加.其实Linux是有文件句柄限制的,而且Linux默认一般都是1024.在生产环境中很容易到达这个值,因此这里就会成为系统的瓶颈. 在Linux ...
- JavaScript中if语句优化和部分语法糖小技巧推荐
前言 在前端日常开发过程中,if else判断语句使用的次数应该是比较频繁的了,一些较为复杂的场景,可能会用到很多判断,在某个代码块使用很多if else时,代码会显得较为冗余,阅读起来不够清晰. 除 ...