angularJS通过post方法下载excel文件
exportData: function (templateId, rowId) { var config = { headers: { 'Content-Type': 'application/json' }, responseType: 'arraybuffer' }; return $http.post(commonSvc.baseURlForDCBulk + 'api/export/' + templateId, rowId, config).then( function (response) { var blob = new Blob([response.data], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
"}); var objectUrl = URL.createObjectURL(blob); return objectUrl } ).catch(commonSvc.translateHttpError) }
1.post的方法里要加responseType: 'arraybuffer'参数,不然下载的excel会乱码
2.使用{type: "application/vnd.ms-excel"}的写法,可以保存为xls格式的excel文件(兼容老版本)。而使用“application/vnd.openxmlformats-officedocument.spreadsheetml.sheet”则会保存为xlsx
3.返回结果为下载excel文档链接,使用window.open(result)即可
指定文件名的方法:
var saveExcelFile = (function () { var a = document.createElement("a"); document.body.appendChild(a); a.style = "display: none"; return function (data, fileName) { var blob = new Blob([data], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}), url = window.URL.createObjectURL(blob); a.href = url; a.download = fileName; a.click(); window.URL.revokeObjectURL(url); }; }()); var fileName = self.exportTableDataList.DisplayName; saveExcelFile(result, fileName);