最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue實現(xiàn)excel表格的導入導出的示例

 更新時間:2023年04月11日 09:50:31   作者:filter忠實信徒  
本文主要介紹了vue實現(xiàn)excel表格的導入導出的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

一、下載xlsx插件

npm i xlsx

二、通過element-ui組件的upload組件上傳文件

  <el-upload
    class="upload-demo"
    action //必選參數(shù),上傳的地址,這里我們不寫地址自定義上傳
    accept=".xlsx,.xls"  //文件類型
    :auto-upload="false" //是否在選取文件后立即進行上傳
    :show-file-list="false" //是否顯示已上傳文件列表
    :on-change="handleChange" //文件狀態(tài)改變時的鉤子,添加文件、上傳成功和上傳失敗時都會被調(diào)用
  >
    <el-button type="primary">選擇文件</el-button>
  </el-upload>

三、把選擇的Excel文件把文件內(nèi)容轉(zhuǎn)化為二進制

//把二進制文件進行讀取
export function readFile(file) {
  return new Promise((resolve, reject) => {
    // FileReader主要用于將文件內(nèi)容讀入內(nèi)存,通過一系列異步接口,可以在主線程中訪問本地文件.
    let reader = new FileReader();
    // 異步按字節(jié)讀取文件內(nèi)容,結(jié)果為文件的二進制串
    reader.readAsBinaryString(file);
    reader.onload = (ev) => {
      resolve(ev.target.result);
    };
  });
}

四、通過插件中的xlsx.read()讀取二進制數(shù)據(jù)

//選擇文件
const handleChange = async function (e) {
    const file = e.raw; //選擇的文件內(nèi)容
    let data = await readFile(file); //將內(nèi)容轉(zhuǎn)化為二進制
    let workbook = xlsx.read(data, { type: "binary" });  //通過插件讀取二進制數(shù)據(jù) binary二進制
}

五、通過xlsx.utils.sheet_to_json()把表格一中的數(shù)據(jù)轉(zhuǎn)化為JSON格式

  //表格目錄一中的數(shù)據(jù)
  let worksheet = workbook.Sheets[workbook.SheetNames[0]];
  //把數(shù)據(jù)轉(zhuǎn)化為json數(shù)據(jù)格式
  data = xlsx.utils.sheet_to_json(worksheet);

六、把讀取的JSON數(shù)據(jù)轉(zhuǎn)化為可以傳遞給服務(wù)器的數(shù)據(jù)

 //把讀取的數(shù)據(jù)變?yōu)樽詈罂梢詡鬟f給服務(wù)器的數(shù)據(jù)(所在地=>address,學校名稱=>shcoolName......)
  let arr = [];
  data.forEach((item) => {
    let obj = {};
    for (let key in character) {
      //  hasOwnProperty() 方法會返回一個布爾值,指示對象自身屬性中是否具有指定的屬性(也就是,是否有指定的鍵)
      //  即使屬性的值是 null 或 undefined,只要屬性存在,hasOwnProperty 依舊會返回 true。
      //  判斷是否有規(guī)定的屬性沒有就終止執(zhí)行
      if (!character.hasOwnProperty(key)) break;
      let v = character[key],
        text = v.text,
        type = v.type;
      v = item[text] || "";
      //將數(shù)據(jù)轉(zhuǎn)化為對應的數(shù)據(jù)類型 不符合的話不做操作
      type === "string" ? (v = String(v)) : null;
      type === "number" ? (v = Number(v)) : null;
      obj[key] = v;
    }
    arr.push(obj);
  });
  //給用戶一點延遲
  await delay(100);
  //將導入數(shù)據(jù)展示到頁面中
  result.tableData = arr;

導出

// 1.把數(shù)據(jù)轉(zhuǎn)化為表格名稱對應
  let arr = result.tableData.map((item) => {
    return {
      辦學層次: item.levels,
      備注: item.message,
      學校名稱: item.schoolName,
      所在地: item.address,
    };
  });
  //2.用于將 JSON 數(shù)據(jù)轉(zhuǎn)換為 Excel 工作表中的單元格數(shù)據(jù)。
  let sheet = xlsx.utils.json_to_sheet(arr);
  //3.用于創(chuàng)建一個新的 Excel 工作簿對象它返回一個空白的工作簿,可以向其中添加工作表和單元格數(shù)據(jù)。
  let book = xlsx.utils.book_new();
  //4.用于向現(xiàn)有的 Excel 工作簿對象(Workbook)中添加一個新的工作表
  // book_append_sheet(wb, sheet, name=None)
  //參數(shù)wb是要將工作表添加到的 Workbook 對象;sheet 參數(shù)是要添加的 Worksheet 對象;name 參數(shù)是要為工作表指定的名稱(如果未指定,則使用默認名稱)
  xlsx.utils.book_append_sheet(book, sheet, "sheet1");
  //5.用于將 Excel 工作簿下載到本地文件系統(tǒng)中 book要下載的Eceial表格,第二個參數(shù)是表格名稱
  xlsx.writeFile(book, `user${new Date().getTime()}.xls`);

到此這篇關(guān)于vue實現(xiàn)excel表格的導入導出的示例的文章就介紹到這了,更多相關(guān)vue excel導入導出內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue+element樹形選擇器組件封裝和使用方式

    vue+element樹形選擇器組件封裝和使用方式

    這篇文章主要介紹了vue+element樹形選擇器組件封裝和使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2020-04-04
  • Vue中設(shè)置登錄驗證攔截功能的思路詳解

    Vue中設(shè)置登錄驗證攔截功能的思路詳解

    今天在做vue和springboot交互的一個項目的時候,想要基于前端實現(xiàn)一些只有登錄驗證之后才能訪問某些頁面的操作,所以在這里總結(jié)一下實現(xiàn)該功能的一個解決方案
    2021-10-10
  • element-ui多文件上傳的實現(xiàn)示例

    element-ui多文件上傳的實現(xiàn)示例

    這篇文章主要介紹了element-ui多文件上傳的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • vue2.* element tabs tab-pane 動態(tài)加載組件操作

    vue2.* element tabs tab-pane 動態(tài)加載組件操作

    這篇文章主要介紹了vue2.* element tabs tab-pane 動態(tài)加載組件操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • vue3?使用?vue3-video-play實現(xiàn)在線視頻播放

    vue3?使用?vue3-video-play實現(xiàn)在線視頻播放

    這篇文章主要介紹了vue3?使用?vue3-video-play?進行在線視頻播放,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • 淺談vue-props的default寫不寫有什么區(qū)別

    淺談vue-props的default寫不寫有什么區(qū)別

    這篇文章主要介紹了淺談vue-props的default寫不寫有什么區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • vue大文件分片上傳之simple-uploader.js的使用

    vue大文件分片上傳之simple-uploader.js的使用

    本文主要介紹了vue大文件分片上傳之simple-uploader.js的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • Vue2.x響應式簡單講解及示例

    Vue2.x響應式簡單講解及示例

    這篇文章主要介紹了Vue2.x響應式及簡單的示例,應用了簡單的源代碼進行講解,感興趣的小伙伴可以參考一下,希望可以幫助到你
    2021-08-08
  • Vue過濾器filters的用法及時間戳轉(zhuǎn)換問題

    Vue過濾器filters的用法及時間戳轉(zhuǎn)換問題

    Vue的filters過濾器是比較常見的一個知識點,下面我將結(jié)合時間戳轉(zhuǎn)換的例子帶你快速了解filters的用法,感興趣的朋友一起看看吧
    2021-09-09
  • Vue2.0學習系列之項目上線的方法步驟(圖文)

    Vue2.0學習系列之項目上線的方法步驟(圖文)

    這篇文章主要介紹了Vue2.0學習系列之項目上線的方法步驟(圖文),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09

最新評論

金堂县| 阳新县| 视频| 泽州县| 治多县| 色达县| 廊坊市| 南川市| 乐陵市| 大港区| 河南省| 康定县| 大城县| 垣曲县| 神农架林区| 临江市| 余庆县| 新龙县| 平果县| 墨脱县| 固原市| 滦南县| 文安县| 西贡区| 沁源县| 玛纳斯县| 小金县| 甘孜县| 福州市| 新泰市| 溧水县| 景宁| 晋宁县| 威海市| 邢台县| 竹山县| 瓦房店市| 宜良县| 枣强县| 无棣县| 江津市|