Vue 使用Export2Excel導出excel、使用xlsx導入excel


 

 

導出參考這個開源項目地址:

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文件夾下,可根據自己的習慣保存路徑)

 

 

  • 項目中使用
  1. 引入 export_json_to_excel 方法 (使用相對路徑)
    import {export_json_to_excel} from '@/vendor/Export2Excel'
  2. 格式化表格數據
    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

 


免責聲明!

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



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