1.post的方法里要加responseType: 'blob'參數,不然下載的excel會亂碼 2.使用{type: "application/vnd.ms-excel"}的寫法,可以保存為xls格式的excel文件(相容老版本)。而使用“application/vnd.openxmlformat ...
1.post的方法里要加responseType: 'blob'參數,不然下載的excel會亂碼
2.使用{type: "application/vnd.ms-excel"}的寫法,可以保存為xls格式的excel文件(相容老版本)。而使用“application/vnd.openxmlformats-officedocument.spreadsheetml.sheet”則會保存為xlsx
3.返回結果為下載excel文檔鏈接,使用window.open(result)即可
4.使用增加節點調用click方法,而不使用window.open(objectUrl)方法,是防止被瀏覽器當插件屏蔽彈出連接
5.給文件設定名字,直接在a標簽的download屬性中設置即可
1、方法1
axios.post('/getExcel',{},{responseType:'blob'}).then((res:any)=>{ let reader = new FileReader() reader.readAsDataURL(res); reader.onload = (e:any)=>{ var a = document.createElement('a'); document.body.appendChild(a); a.style.display = 'none'; a.href = e.target.result; a.download = 'name.xlsx'; a.click(); a.remove(); } })
2、方法2
var download = function (file_name:string, content:any) { var csvData = new Blob([content], { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }); // for IE if (window.navigator && window.navigator.msSaveOrOpenBlob) { window.navigator.msSaveOrOpenBlob(csvData, file_name); } // for Non-IE (chrome, firefox etc.) else { var a = document.createElement('a'); document.body.appendChild(a); a.style.display = 'none'; var url = window.URL.createObjectURL(csvData); a.href = url; a.download = file_name; a.click(); a.remove(); window.URL.revokeObjectURL(url); } }; this.$axios.post('/getExcel',{},{responseType:'blob'}).then((res:any)=>{ download('name',res); })