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);