SpringBoot实现 Excel导出接口,Axios下载乱码问题

SpringBoot实现 Excel导出接口,Axios下载乱码问题


背景:使用Easypoi生成 .xlsx格式的Excel文档

后端实现代码

response.setCharacterEncoding("UTF-8");
response.setHeader("Access-Control-Expose-Headers","Content-Disposition");
// 错误的
//response.setHeader("Content-Type", "application/vnd.ms-excel;charset=utf-8");
// 正确的
response.setHeader("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode( "导出文件名称.xlsx", "UTF-8"));

前端实现代码:

//错误的
//var blob = new Blob([res.data], {type: 'application/vnd.ms-excel;charset=utf-8'}); 
//正确的
var blob = new Blob([res.data], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'}); 

HTTP Content-Type 对照表(部分)

扩展名Content-Type
.xlsapplication/vnd.ms-excel
.xlsxapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet

原因:
如果实际开发中遇见这个问题,看到这里大家应该已经知道原因了。
Axios获取到Blob的时候要设置正确的Type。实际开发中可以通过后端返回的Header Conten-Type进行设置。这样能保证前后端类型对齐。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值