vue.js前端實現excel表格匯出和獲取headers裡的資訊
前段時間寫過一篇文章基於element實現後臺管理系統,並提到excel表格匯出功能,可能描述不是很詳細,現在單獨整理列出。
後端提供的介面:
// 下載分揀列表
export function getAssormentExport(params) {
return request({
url: `/manage/health/assorment/export?ids=` + params,
responseType: `arraybuffer`, // 代表記憶體之中的一段二進位制資料 必須加
method: `get`
})
}
vue:點選按鈕呼叫介面
<el-button type="primary" size="mini" @click="addexport()">匯出選中</el-button>
script:
// 匯出選中
addexport() {
if (this.multipleSelection.length <= 0) {
this.$message({
showClose: true,
message: `未選中資料`,
type: `error`
})
return
}
for (let i = 0; i < this.multipleSelection.length; i++) {
this.ids.push(this.multipleSelection[i].id)
} // push一個新的陣列,儲存需要匯出資訊的ID並傳給介面實現資料返回
getAssormentExport(this.ids).then(
function(response) {
const filename = decodeURI(response.headers[`content-disposition`].split(`;`)[1].split(`=`)[1]) || `分揀表.xlsx`
this.fileDownload(response.data, filename) // response.data是後端返回的二進位制資料流,filename是獲取到的匯出檔名,獲取失敗使用預設值
this.ids = []
}.bind(this)
).catch(
function(error) {
this.$message({
showClose: true,
message: error,
type: `error`
})
this.ids = []
}.bind(this)
)
},
fileDownload(data, fileName) {
const blob = new Blob([data], {
type: `application/octet-stream`
})
const filename = fileName || `filename.xlsx`
if (typeof window.navigator.msSaveBlob !== `undefined`) {
window.navigator.msSaveBlob(blob, filename)
} else {
var blobURL = window.URL.createObjectURL(blob)
var tempLink = document.createElement(`a`)
tempLink.style.display = `none`
tempLink.href = blobURL
tempLink.setAttribute(`download`, filename)
if (typeof tempLink.download === `undefined`) {
tempLink.setAttribute(`target`, `_blank`)
}
document.body.appendChild(tempLink)
tempLink.click()
document.body.removeChild(tempLink)
window.URL.revokeObjectURL(blobURL)
}
},
檢視呼叫介面返回的資訊
備註:
1.response返回了包含響應頭所帶的所有資料,可以使用console.log(response)檢視列印資料,但是列印出來的資料只能拿到預設的響應頭,這裡有個需要注意的地方。
-
Cache-Control
-
Content-Language
-
Content-Type
-
Expires
-
Last-Modified
-
Pragma
如果想讓瀏覽器能訪問到其他響應頭的話,需要後端在伺服器上設定Access-Control-Expose-Headers
Access-Control-Expose-Headers : `content-disposition`
後端大致寫法:
headers.add("Access-Control-Expose-Headers", "Content-Disposition");
這樣response.headers[`content-disposition`].split(`;`)[1].split(`=`)[1] 就能取到介面返回的檔名稱了。
2. decodeURI的使用
decodeURI() 函式可對 encodeURI() 函式編碼過的 URI 進行解碼。
例項
在本例中,我們將使用 decodeURI() 對一個編碼後的 URI 進行解碼:
<script type="text/javascript">
var test1="http://www.w3school.com.cn/My first/"
document.write(encodeURI(test1)
+ "<br />")
document.write(decodeURI(test1)
)
</script>
輸出:
http://www.w3school.com.cn/My%20first/ http://www.w3school.com.cn/My first/
相關文章
- vue實現前端匯出excel表格Vue前端Excel
- Vue實現匯出excel表格VueExcel
- 前端實現Excel匯入和匯出功能前端Excel
- SpringBoot利用java反射機制,實現靈活讀取Excel表格中的資料和匯出資料至Excel表格Spring BootJava反射Excel
- 前端常用方法之匯出excel表格前端Excel
- 騰訊文件怎樣匯出excel表格 騰訊文件如何匯出excelExcel
- js匯出Excel表格JSExcel
- vue匯出Excel表格VueExcel
- vue匯出excel資料表格功能VueExcel
- vue 專案中 實現列表的匯出excel表格的功能VueExcel
- EasyPoi框架實現Excel表格匯入框架Excel
- springboot poi匯出excel表格Spring BootExcel
- vue + element + 匯入、匯出excel表格VueExcel
- Vue匯出資料到Excel電子表格VueExcel
- vue2.0 匯出Excel表格資料VueExcel
- php讀取excel檔案資料的匯入和匯出PHPExcel
- 基於EPPlus和NPOI實現的Excel匯入匯出Excel
- 資料庫文件編寫,如何通過Navicat把表導成表格?資料庫快速匯出為excel表格資訊,excel匯出到word表格資料庫Excel
- vue+elementUI表格匯出excelVueUIExcel
- vue將表格匯出為excelVueExcel
- node 抓取api資料匯出為excel表格APIExcel
- element-UI庫Table表格匯出Excel表格UIExcel
- Vue element-ui 裡面的table匯出excel表格 步驟VueUIExcel
- vue 前端匯出 excelVue前端Excel
- 將資料庫中資料匯出為excel表格資料庫Excel
- Vue + Element 實現匯入匯出ExcelVueExcel
- vue+element將資料匯出成excel表格VueExcel
- php如何將資料匯出成excel表格呢?PHPExcel
- Vue+Element 實現excel的匯入匯出VueExcel
- Element-ui元件庫Table表格匯出Excel表格UI元件Excel
- Vue框架下實現匯入匯出Excel、匯出PDFVue框架Excel
- C# 實現NPOI的Excel匯出C#Excel
- 純前端匯出微信通訊錄到 Excel前端Excel
- selenium 是否能獲取網頁裡出現的提示資訊?(如圖)網頁
- Laravel6 配合 Maatwebsite\Excel 實現 Excel 匯出LaravelWebExcel
- VUE中使用vue-json-excel超級方便匯出excel表格資料VueJSONExcel
- spring boot + easypoi快速實現excel匯入匯出Spring BootExcel
- Laravel Maatwebsite-Excel 3.1 實現匯出匯入LaravelWebExcel