vue將表格導出爲excel前端
一:在項目中須要安裝2個依賴項,以下命令:vue
npm install --save file-saver xlsx
二:在vue文件中以下使用便可:git
<template> <div class="hello"> <h1>vue</h1> <h2>{{msg}}</h2> <p><button type="button" id="export-table" @click="exportFunc">下載excel文件</button></p> <div id="out-table"> <table> <thead> <tr> <td>ID</td> <td>姓名</td> <td>年齡</td> </tr> </thead> <tbody> <tr> <td>111111</td> <td>我是前端開發</td> <td>今年29歲</td> </tr> </tbody> </table> </div> </div> </template> <script> import FileSaver from 'file-saver'; import XLSX from 'xlsx'; console.log(FileSaver); export default { name: 'helloworld', data () { return { msg: 'Welcome to Your Vue.js App' }; }, methods: { exportFunc: function(e) { // 從表生成工做簿對象 var wb = XLSX.utils.table_to_book(document.getElementById('out-table')); // 獲得二進制字符串做爲輸出 var wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'binary' }); FileSaver.saveAs(new Blob([this.s2ab(wbout)], { type: 'application/octet-stream' }), 'a.xlsx'); }, s2ab: function(s) { var cuf; var i; if (typeof ArrayBuffer !== 'undefined') { cuf = new ArrayBuffer(s.length); var view = new Uint8Array(cuf); for (i = 0; i !== s.length; i++) { view[i] = s.charCodeAt(i) & 0xFF; } return cuf; } else { cuf = new Array(s.length); for (i = 0; i !== s.length; ++i) { cuf[i] = s.charCodeAt(i) & oxFF; } return cuf; } } }, components: { FileSaver, XLSX } }; </script>
git上源碼github
注意:table裏面中的表頭thead中不能使用th標籤,不然的話,表頭導入不出去到excel文件中,只能使用tr,td這樣的。npm