使用EasyExcel实现模板下载、导入和导出功能,Java面试题及答案2024
一、依赖
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开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
总结
面试难免让人焦虑不安。经历过的人都懂的。但是如果你提前预测面试官要问你的问题并想出得体的回答方式,就会容易很多。
此外,都说“面试造火箭,工作拧螺丝”,那对于准备面试的朋友,你只需懂一个字:刷!
给我刷刷刷刷,使劲儿刷刷刷刷刷!今天既是来谈面试的,那就必须得来整点面试真题,这不花了我整28天,做了份“Java一线大厂高岗面试题解析合集:JAVA基础-中级-高级面试+SSM框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法等”
且除了单纯的刷题,也得需准备一本【JAVA进阶核心知识手册】:JVM、JAVA集合、JAVA多线程并发、JAVA基础、Spring 原理、微服务、Netty与RPC、网络、日志、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB、Cassandra、设计模式、负载均衡、数据库、一致性算法、JAVA算法、数据结构、加密算法、分布式缓存、Hadoop、Spark、Storm、YARN、机器学习、云计算,用来查漏补缺最好不过。
且除了单纯的刷题,也得需准备一本【JAVA进阶核心知识手册】:JVM、JAVA集合、JAVA多线程并发、JAVA基础、Spring 原理、微服务、Netty与RPC、网络、日志、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB、Cassandra、设计模式、负载均衡、数据库、一致性算法、JAVA算法、数据结构、加密算法、分布式缓存、Hadoop、Spark、Storm、YARN、机器学习、云计算,用来查漏补缺最好不过。
[外链图片转存中…(img-5Pjt0S2m-1711169673024)]
更多推荐
所有评论(0)