今天在PC端做一个报表导出excel的功能,实现方式通过后台提供请求接口来获取数据流,然后前端再通过a标签下载excel文件。
在获取到后台数据后,前端实现具体代码如下:
let blob = new Blob([res.data], {
type: "application/vnd.ms-excel;charset=utf-8",
});
var downloadElement = document.createElement("a");
var href = window.URL.createObjectURL(blob);
downloadElement.href = href;
downloadElement.download = "活动统计.xlsx";
document.body.appendChild(downloadElement);
downloadElement.click();
document.body.removeChild(downloadElement);
window.URL.revokeObjectURL(href);
但是问题来了,导出的excel打开后会提示如下
在点击了是之后,又会提示
但是通过swagger下载的excel却能正常打开。
于是和后台同事折腾了3个小时,查阅各种资料,各种尝试依然不行。
结果导致这个问题的原因很简单,前端在请求数据时,应该设置接收后台数据类型格式为'blob',然鹅,我没有设置,也不知道需要设置。
{
responseType: 'blob',
}
好吧~就这么简单!菜是原罪!
网友评论