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会乱码javascript
2.使用{type: "application/vnd.ms-excel"}的写法,能够保存为xls格式的excel文件(兼容老版本)。而使用“application/vnd.openxmlformats-officedocument.spreadsheetml.sheet”则会保存为xlsxjava
3.返回结果为下载excel文档连接,使用window.open(result)便可json
指定文件名的方法:api
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);