angularjs 通过http下载php生成的excel的方法
研究了一下,有以下几种方式:
// 创建a标签模拟下载
function exportExcel(params,filename) {
return $http({
url: '/api/exportExcel',method: "POST",headers: {
'Content-type': 'application/json'
},params: params,responseType: 'arraybuffer'
}).success(function (data) {
var blob = new Blob([data],{type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"});
var objectUrl = URL.createObjectURL(blob);
var a = document.createElement('a');
document.body.appendChild(a);
a.setAttribute('style','display:none');
a.setAttribute('href',objectUrl);
a.setAttribute('download',filename);
a.click();
URL.revokeObjectURL(objectUrl);
});
}
这个方式中要注意,如果传输的是xls,也就是excel5文件,type要设置为application/vnd.ms-excel 或application/x-excel。 // 生成下载url
$scope.data.down_url = "../c_potential/get_excel?end_time="+$scope.end_date+"&liable="+liable+"&nickname="+$scope.data.nickname+"&province="+$scope.data.province_cur+"&start_time="+$scope.start_date;
然后将url绑定到某个a标签中,这种方式适合参数较少的情况,而且数据不会经过二次处理,不易发生error,唯一的缺点是需要处理两次,可以设置两个按钮,一个为生成,将参数写入url中,第二个按钮为下载excel。虽然用户是两次操作,但实际上只发生了一次http请求,不会影响性能。 angularjs模拟下载的方式最方便,但有可能出现error,第二种方式最保险。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |