一、依赖

pom.xml 中需要添加的依赖

com.alibaba

easyexcel

2.2.6

二、创建User实体类

@Data

@Builder

@NoArgsConstructor

@AllArgsConstructor

public class User implements Serializable {

private static final long serialVersionUID = -5144055068797033748L;

/**

  • 编号

*/

@ExcelProperty(value = “id”, index = 0)

private Long id;

/**

  • 用户名

*/

@ExcelProperty(value = “用户名”, index = 1)

private String username;

/**

  • 显示名称

*/

@ExcelProperty(value = “名称”, index = 2)

private String nickname;

/**

  • 密码

*/

@ExcelProperty(value = “密码”, index = 3)

private String password;

/**

  • 邮箱

*/

@ExcelProperty(value = “邮箱”, index = 4)

private String email;

/**

  • 头像

*/

@ExcelProperty(value = “头像”, index = 5)

private String avater;

}

这里我用的是 lombok 生成 getter/setter 和构造器,用的是 Mybatis作为 ORM 框架。

这里用到了 @ExcelProperty 注解,这个注解很重要必要的一个注解,注解中的两个参数value,index分别代表列名,列序号

**1.value 通过标题文本对应

2.index 通过文本行号对应**

二、Excel导出工具类

public class ExcelUtil {

/**

  • 导出

  • @param response

  • @param data

  • @param fileName

  • @param sheetName

  • @param clazz

  • @throws Exception

*/

public static void writeExcel(HttpServletResponse response, List<? extends Object> data, String fileName, String sheetName, Class clazz) throws Exception {

//表头样式

WriteCellStyle headWriteCellStyle = new WriteCellStyle();

//设置表头居中对齐

headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);

//内容样式

WriteCellStyle contentWriteCellStyle = new WriteCellStyle();

//设置内容靠左对齐

contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT);

HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);

EasyExcel.write(getOutputStream(fileName, response), clazz).excelType(ExcelTypeEnum.XLSX).sheet(sheetName).registerWriteHandler(horizontalCellStyleStrategy).doWrite(data);

}

private static OutputStream getOutputStream(String fileName, HttpServletResponse response) throws Exception {

fileName = URLEncoder.encode(fileName, “UTF-8”);

response.setContentType(“application/vnd.ms-excel”);

response.setCharacterEncoding(“utf8”);

response.setHeader(“Content-Disposition”, “attachment;filename=” + fileName + “.xlsx”);

return response.getOutputStream();

}

}

三、模板下载

模板下载其实和导出的意思差不多,只不过数据使我们手写的模板数据,而非真实数据。

/**

  • 下载Excel模板

*/

@GetMapping(“/excel/template”)

public void downloadTemplate(HttpServletResponse response) {

String fileName = “导入用户模板”;

String sheetName = “导入用户模板”;

List userList = new ArrayList<>();

userList.add(new User(1L, “张三”, “zhsngsan”, “123456”, “847064370@qq.com”, “123”));

userList.add(new User(2L, “李四”, “lisi”, “123456”, “666666@qq.com”, “456”));

try {

ExcelUtil.writeExcel(response, userList, fileName, sheetName, User.class);

} catch (Exception e) {

e.printStackTrace();

}

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

总结

面试难免让人焦虑不安。经历过的人都懂的。但是如果你提前预测面试官要问你的问题并想出得体的回答方式,就会容易很多。

此外,都说“面试造火箭,工作拧螺丝”,那对于准备面试的朋友,你只需懂一个字:刷!

给我刷刷刷刷,使劲儿刷刷刷刷刷!今天既是来谈面试的,那就必须得来整点面试真题,这不花了我整28天,做了份“Java一线大厂高岗面试题解析合集:JAVA基础-中级-高级面试+SSM框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法等”

image

且除了单纯的刷题,也得需准备一本【JAVA进阶核心知识手册】:JVM、JAVA集合、JAVA多线程并发、JAVA基础、Spring 原理、微服务、Netty与RPC、网络、日志、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB、Cassandra、设计模式、负载均衡、数据库、一致性算法、JAVA算法、数据结构、加密算法、分布式缓存、Hadoop、Spark、Storm、YARN、机器学习、云计算,用来查漏补缺最好不过。

image

且除了单纯的刷题,也得需准备一本【JAVA进阶核心知识手册】:JVM、JAVA集合、JAVA多线程并发、JAVA基础、Spring 原理、微服务、Netty与RPC、网络、日志、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB、Cassandra、设计模式、负载均衡、数据库、一致性算法、JAVA算法、数据结构、加密算法、分布式缓存、Hadoop、Spark、Storm、YARN、机器学习、云计算,用来查漏补缺最好不过。

[外链图片转存中…(img-5Pjt0S2m-1711169673024)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

GitHub 加速计划 / ea / easyexcel
31.64 K
7.47 K
下载
快速、简洁、解决大文件内存溢出的java处理Excel工具
最近提交(Master分支:3 个月前 )
c42183df Bugfix 3 个月前
efa7dff6 * 重新加回 `commons-io` 3 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐