JS實現(xiàn)Excel導出功能以及導出亂碼問題解決詳解
實現(xiàn)效果
在導出表格數(shù)據(jù)的時候,通常分為兩種情況
- 頁面列表數(shù)據(jù)導出
- 接口返回數(shù)據(jù)導出
這里主要介紹接口返回數(shù)據(jù)導出,關于頁面的列表數(shù)據(jù)導出,請看另一篇:vue3+element表格數(shù)據(jù)導出
接口返回數(shù)據(jù)導出,通常需要請求后端接口獲取數(shù)據(jù),接口返回的數(shù)據(jù)基本上是亂碼的,需要先處理亂碼的數(shù)據(jù),否則導出來的文件是損壞的,如下
看到這種返回信息,表格數(shù)據(jù)基本上是已經拿到了,現(xiàn)在只需要做一下數(shù)據(jù)的處理即可導出表格。
解決方法步驟拆解
步驟一:解碼
在請求接口的位置添加 { responseType: 'blob' }
將信息轉碼,此處有兩種寫法:
寫法1:
// 導出 export function userTable(params) { return request({ url: '/users/table', method: 'get', params, responseType: 'blob' // 添加 blob 解決亂碼問題,或者 arraybuffer }) }
寫法2:
export const userTable = (params) => axios.get('/users/table',{params},{ responseType: 'blob' }) // 在請求的后面加一行 { responseType: 'blob' } // 或者 { responseType: 'arraybuffer' }
步驟二:請求數(shù)據(jù)
// 導出 const getTable = async () => { // 請求導出接口 獲取到后端返回的數(shù)據(jù) let list = await getTableInfo(PageInfo); console.log(list) };
此處得到的返回結果已經成功編譯,打印的結果如圖所示:
步驟三:導出表格
步驟一配置完后這里可以直接復制,替換一下請求的接口即可
// 導出完整語法 const getTable = async () => { // 請求導出接口 獲取到后端返回的數(shù)據(jù) let list = await getTableInfo(PageInfo); // content = 導出返回的數(shù)據(jù) let content = list; let data = new Blob([content], { type: "application/vnd.ms-excel;charset=utf-8" }); let downloadUrl = window.URL.createObjectURL(data); let anchor = document.createElement("a"); anchor.href = downloadUrl; anchor.download = "表格名稱.xlsx"; // 表格名稱.文件類型 anchor.click(); window.URL.revokeObjectURL(list); // 消除請求接口返回的list數(shù)據(jù) }; };
到此這篇關于JS實現(xiàn)Excel導出功能以及導出亂碼問題解決詳解的文章就介紹到這了,更多相關JS Excel導出內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
JavaScript數(shù)據(jù)結構與算法之基本排序算法定義與效率比較【冒泡、選擇、插入排序】
這篇文章主要介紹了JavaScript數(shù)據(jù)結構與算法之基本排序算法定義與效率比較,結合實例形式詳細總結分析了javascript排序算法中的冒泡、選擇、插入等排序算法原理與操作技巧,需要的朋友可以參考下2019-02-02DataTables添加額外的查詢參數(shù)和刪除columns等無用參數(shù)實例
下面小編就為大家?guī)硪黄狣ataTables添加額外的查詢參數(shù)和刪除columns等無用參數(shù)實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07javascript實現(xiàn)百度地圖鼠標滑動事件顯示、隱藏
這篇文章主要介紹了javascript實現(xiàn)百度地圖鼠標滑動事件顯示、隱藏的思路和方法,十分的實用,這里推薦給小伙伴們,有需要的朋友可以參考下。2015-04-04