// 设置响应头
response.setContentType("application/octet-stream;charset=UTF-8");
String returnName = null;
try {
returnName = URLEncoder.encode(fileName, "UTF-8");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
response.setHeader("Content-Disposition", "attachment;filename=" + returnName);
往response 写入数据
- 使用easyexcel自带的方法就行
// 这里 指定文件
try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build();) {
// try (ExcelWriter excelWriter = EasyExcel.write(fileName).build()) {
if (hasXL) {
WriteSheet writeSheet2 = EasyExcel.writerSheet(2, "小料费用差异对比").head(DepreciationEquipXLDto.class).build();
// 获取小料费用差异
List<DepreciationEquipXLDto> data2 = assetDepreciationSingleDetailService.getDepreciationEquXLCompare(entityList);
excelWriter.write(data2, writeSheet2);
}
if (hasJL) {
WriteSheet writeSheet = EasyExcel.writerSheet(0, "其他费用差异对比").head(DepreciationOtherDto.class).build();
// 获取其他费用差异
List<DepreciationOtherDto> data = assetDepreciationSingleDetailService.getDepreciationOtherCompare(entityList);
excelWriter.write(data, writeSheet);
WriteSheet writeSheet1 = EasyExcel.writerSheet(1, "胶料费用差异对比").head(DepreciationEquipJLDto.class).build();
// 获取胶料费用差异
List<DepreciationEquipJLDto> data1 = assetDepreciationSingleDetailService.getDepreciationEquJLCompare(entityList);
excelWriter.write(data1, writeSheet1);
}
WriteSheet writeSheet3 = EasyExcel.writerSheet(3, "总费用差异对比").head(DepreciationTotalDto.class).build();
// 获取总费用差异
List<DepreciationTotalDto> data3 = assetDepreciationSingleDetailService.getDepreciationTotalCompare(entityList);
excelWriter.write(data3, writeSheet3);
// 获取具体的折旧明细
WriteSheet writeSheet4 = EasyExcel.writerSheet(4, "折旧明细").head(DepreciationSingleDetailDto.class).build();
// 获取具体的折旧明细
List<DepreciationSingleDetailDto> data4 = assetDepreciationSingleDetailService.getDepreciationSingleDetail(entityList);
excelWriter.write(data4, writeSheet4);
} catch (IOException e) {
throw new RuntimeException(e);
}
前端
- 后端返回了之后,有响应数据,但是不会自动下载
- 前端定义的返回类型必须是blob类型
- 创建隐式a标签,自动点击下载
export function downloadCompareFile(data) {
return request({
url: '/client/depreciationDetail/downloadCompareFile',
method: 'post',
data: data,
responseType: 'blob' // 表明返回服务器返回
### 最后
全网独播-价值千万金融项目前端架构实战

从两道网易面试题-分析JavaScript底层机制

RESTful架构在Nodejs下的最佳实践
**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.youkuaiyun.com/topics/618166371)**

一线互联网企业如何初始化项目-做一个自己的vue-cli

思维无价,看我用Nodejs实现MVC

代码优雅的秘诀-用观察者模式深度解耦模块

前端高级实战,如何封装属于自己的JS库

VUE组件库级组件封装-高复用弹窗组件
