最近完成后台管理系统需要将数据导出为excel并发送给浏览器进行下载,正好进行一下有关实现的总结。
相关依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.7.16</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.3.2</version>
</dependency>
如何将数据导出为excel
我这里是将需要的数据查出来然后填充到模板里面生成excel表格
- 填充的数据对象
@Data
public class ExportData {
private String group;
private String name;
private String college;
private String majorAndClass;
}
- 模板文件:
要进填充模板首先要有一个模板文件,例子:
模板注意 用{} 来表示你要用的变量 如果本来就有"{","}" 特殊字符 用"{","}"代替
当需要填充的是list时用点来表示list,如上图需要填充的就是list所以变量名前有 .
-
查询数据 查询数据依实际情况进行查询然后封装到填充对象中即可
-
生成excel表格
// 查出数据
List<ExportData> data = listExportData(group);
// 生成的excel所在路径
String fileName = "D:\\test.xlsx";
// 模板所在路径
String template = "D:\\demo.xlsx";
// 生成表格, 会将数据填充到第一个sheet里面,然后会自动关闭流
EasyExcel.write(fileName).withTemplate(template).sheet().doFill(data);
通过以上步骤就可以将数据导出到excel表格中
将生成的excel表格发送给浏览器
// 将excel表格生成流
UrlResource resource = new UrlResource("file:\\\\\\" + fileName);
if(resource.exists() && resource.isReadable()){
// 返回给浏览器
return resource;
}else{
throw new RuntimeException("文件不存在或不可读");
}
注意:创建流时的文件名前加上 “ file:\\\” 是为了标识是一个文件,“\\\” 实际上是三个 \。
以上便是在springboot中导出excel表格并发送给浏览器的过程。