導出參考這個開源項目地址:
https://panjiachen.github.io/vue-element-admin/#/excel/export-merge-header
導出excel
- 安裝依賴
npm install -S file-saver npm install -S xlsx npm install -D script-loader
下載 Export2Excel.js 文件
這個文件沒在npm上找到,所以在網上找的文件放入項目中。
(復制demo中的Export2Excel.js代碼保存到項目static文件夾下,可根據自己的習慣保存路徑)
- 項目中使用
- 引入 export_json_to_excel 方法 (使用相對路徑)
import {export_json_to_excel} from '@/vendor/Export2Excel' - 格式化表格數據
export_json_to_excel 方法中需要用到的數據和我們在網頁中渲染到table上的數據不同,需要格式化
導入excel
- 安裝依賴
npm install -S xlsx
- html
<label for="import">導入</label> <input type="file" id="import" @change="handleImport" accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" />
import XLSX from "xlsx"; /** * 導入excel的input的change 函數 * @event 事件對象 */ handleImport(event) { // FileReader 對象允許Web應用程序異步讀取存儲在用戶計算機上的文件(或原始數據緩沖區)的內容 let fileReader = new FileReader(); var file = event.currentTarget.files[0]; // 回調函數 fileReader.onload = ev => { try { let data = ev.target.result; let workbook = XLSX.read(data, { type: "binary" }); // excel讀取出的數據 let excelData= XLSX.utils.sheet_to_json( workbook.Sheets[workbook.SheetNames[0]] ); // 將上面數據轉換成 table需要的數據 let arr = []; excelData.forEach(item => { let obj = {}; obj.date = item["日期"]; obj.name = item["姓名"]; obj.province = item["省份"]; obj.city = item["市區"]; obj.address = item["地址"]; obj.zip = item["郵編"]; arr.push(obj); }); this.tableData = [...arr]; } catch (e) { window.alert("文件類型不正確!"); return false; } }; // 讀取文件 成功后執行上面的回調函數 fileReader.readAsBinaryString(file); }
本文參考:https://www.jianshu.com/p/23a1391e63d9
