项目实战 | Excel导出(二)——返回内容优化
章节 |
---|
一、Excel导出方式 |
二、Excel返回内容优化 |
三、Excel导出样式 |
1、初始:返回二进制流,前端接收二进制流转换为Excel文件
ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream())
.withTemplate(is)
.registerConverter(new FileSizeConverter())
.build();
优点:可以直接导出;
缺点:不知道需要传多久,因为不知道流的大小,所以丢失,不可暂停下载。
2、改进:返回Execl文件下载地址
String fileName = "导出数据(" + DateUtils.getExcelTime(date) + ")" + ".xlsx";
//导出到项目静态文件夹中
File file = new File(ResourceUtils.getURL("classpath:").getPath()+"static/outExcel/" + fileName);
File parentFile = file.getParentFile();
if (!parentFile.exists()) {
parentFile.mkdir();
}
InputStream is = getGradeTemplateIn("excel/GradeTeachPlanData.xlsx",gradeTpLists);
ExcelWriter excelWriter = EasyExcel.write(file)
.withTemplate(is)
.registerConverter(new FileSizeConverter())
.registerConverter(new RateConverter())
.build();
配置MvcConfig
@Configuration
public class MvcConfig implements WebMvcConfigurer{
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/outExcel/**").addResourceLocations("classpath:/static/outExcel/");
}
}
返回下载地址:
String filePath = baseInfo.getResMgrRootUrl()+"/outExcel/"+fileName;
return filePath;
优点:
①通过下载地址下载,可暂停,再继续下载
②知道文件大小,具有下载进度,更符合人性化。