Element ui表格數據無法將分頁數據導出問題


問題:

  將兩表格導入頁面后,設置分頁,無法將分頁后的數據導出excel,只能導出第一頁;

解決辦法:

  通過$nextTick(),簡單的來說是在下次DOM更新循環結束之后執行延遲回調,在修改數據之后使用$nextTick,則可以在回調中獲取更新后的DOM(dom的改變是發生在nextTick()之后),這個方法作用是當數據被修改后使用這個方法,會回調獲取更新后的dom再render出來。

  Vue.nextTick()作用:在下次dom更新循環結束之后,執行延遲回調。在修改數據之后立即使用這個方法,獲得更新后的dom。

  簡而言之,如果你在數據改變之后的操作跟改變之后的DOM有關,那么就應該使用Vue.nextTick()。

怎么做?

1、Element組件庫中的el-table表格導出需要的主要是兩個依賴:(xlsx 和 file-saver)

1 npm install --save xlsx file-saver

2、導出表格,方法:

 1 // 數據導出寫入Excel
 2     exportExcel() {
 3       this.currentPage = 1; //當前頁為第一頁
 4       this.limit = this.total; //每頁大小限制條數:為總條數(將表格數據全部渲染出來在第一頁上)
 5       this.$nextTick(function () {
 6         var wb = XLSX.utils.table_to_book(document.querySelector("#out-table"));
 7         /* 獲取二進制字符串作為輸出 */
 8         var wbout = XLSX.write(wb, {
 9           bookType: "xlsx",
10           bookSST: true,
11           type: "array",
12         });
13         try {
14           FileSaver.saveAs(
15             new Blob([wbout], { type: "application/octet-stream" }),
16             "歷史記錄.xlsx"
17           );
18         } catch (e) {
19           if (typeof console !== "undefined") console.log(e, wbout);
20         }
21         this.limit = 15;  //導出之后再恢復原樣,每頁大小為限制條數為15條
22         return wbout;
23       });
24     },

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM