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

Vue實現Excel預覽功能使用場景示例詳解

 更新時間:2023年09月07日 10:39:46   作者:光法V3  
這篇文章主要為大家介紹了Vue實現Excel預覽功能使用場景示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

使用場景

項目中經常能遇到要求預覽excel文件的需求,下面分享一下常用的方法以及可能遇到的問題。

通過解析excel功能,實現PDF導入時的預覽

首先我們用到了XLSX(sheetJs)這個庫來處理Excel類型的文件

地址:

https://docs.sheetjs.com/

https://www.npmjs.com/package/xlsx

支持大部分的現代瀏覽器版本

具體使用

下載: npm i xlsx

首先我們獲取一Excel類型的文件。

這里我直接用了el-upload組件返回的文件

然后使用FileReader讀取文件,注冊初始化onload方法,并且在其onload方法中使用xlsx庫處理文件;

  • 首先使用xlsx的read方法,配置處理的詳情。
const workbook = XLSX.read(data, {
      type: "binary",
      cellText: false,
      cellDates: true,
    });
  • 再輪詢讀取文件
for (let sheet in workbook.Sheets) {
      //循環(huán)讀取每個文件
      const header = XLSX.utils.sheet_to_json(workbook.Sheets[sheet], {
        header: 1,
      });
      const sheetArray = XLSX.utils.sheet_to_json(
        workbook.Sheets[sheet],
        // 配置單元的數據轉換方法,dateNF不生效
        { raw: true, cellDates: true, dateNF: "yyyy/mm/dd" }
      );
      //若當前sheet沒有數據,則continue
      if (sheetArray.length == 0) {
        continue;
      }
      this.tableHeader = header[0];
      this.handleNetX(sheetArray, header[0]);
    }
  } catch (e) {
    this.$message.warning("上傳失敗");
  }

注意sheet_to_json方法中此時cellDates配置為true之后,如果excel文件內的數據類型為時間,會被轉成Date格式。

官方文檔中允許配置dateNF來進行時間格式化,但是實際使用起來并沒有效果。

所以針對時間格式的處理,筆者這里直接轉為Date格式,在后續(xù)過程中進行了手動處理。

我們初始化load方法后,將excel文件源文件,轉為bolb格式,在塞給fileReader.readAsBinaryString,進行文件處理方法的執(zhí)行。

const blob = new Blob([file.raw]);
      fileReader.readAsBinaryString(blob);

最后輪詢sheetArray來進行數據的二次處理,最后得到前端可以使用的Array類型的文件,展示在頁面中或者展示在表單中。

時間格式處理

處理時間的方法寫的比較簡單,主要就是判斷了Date的object類型,來格式化日期類型

handleNetX(sheetArray, header) {
      const totalTable = [];
      for (let index in sheetArray) {
        let row = {};
        header.map(index1 => {
          const tempKey = this.mapTableTitle[index1];
          if (typeof sheetArray[index][index1] === "object") {
            row[tempKey] = this.handleExcelDate(sheetArray[index][index1]);
          } else {
            row[tempKey] = sheetArray[index][index1];
          }
        });
        totalTable.push(row);
      }
      this.tableData = totalTable;
    },
    handleExcelDate(date) {
      if (!date) {
        return;
      }
      return formatDate(date.getTime(), "YYYY/MM/DD");
    },

代碼總結

async handleChangePre(file) {
      this.file = file;
      this.showResult = false;
      const fileReader = new FileReader();
      fileReader.onload = ev => {
        try {
          const data = ev.target.result;
          const workbook = XLSX.read(data, {
            type: "binary",
            cellText: false,
            cellDates: true,
          });
          for (let sheet in workbook.Sheets) {
            //循環(huán)讀取每個文件
            const header = XLSX.utils.sheet_to_json(workbook.Sheets[sheet], {
              header: 1,
            });
            const sheetArray = XLSX.utils.sheet_to_json(
              workbook.Sheets[sheet],
              { raw: true, cellDates: true, dateNF: "yyyy/mm/dd" }
            );
            //若當前sheet沒有數據,則continue
            if (sheetArray.length == 0) {
              continue;
            }
            this.tableHeader = header[0];
            console.log(sheetArray, "sheetArray");
            this.handleNetX(sheetArray, header[0]);
          }
        } catch (e) {
          this.$message.warning("上傳失敗");
        }
      };
      const blob = new Blob([file.raw]);
      fileReader.readAsBinaryString(blob);
    },

以上就是Vue實現Excel預覽功能使用場景示例詳解的詳細內容,更多關于Vue Excel預覽功能的資料請關注腳本之家其它相關文章!

相關文章

  • vue element table表格相同名稱列合并方式

    vue element table表格相同名稱列合并方式

    這篇文章主要介紹了vue element table表格相同名稱列合并方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 在vue中安裝使用sass的實現方法

    在vue中安裝使用sass的實現方法

    這篇文章主要介紹了在vue中安裝使用sass的實現方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • vue的token刷新處理的方法

    vue的token刷新處理的方法

    這篇文章主要介紹了vue的token刷新處理的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • vue窗口內容滾動到底部實現過程

    vue窗口內容滾動到底部實現過程

    這篇文章主要介紹了vue窗口內容滾動到底部實現過程,以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家,
    2025-12-12
  • vue中template模板編譯的過程全面剖析

    vue中template模板編譯的過程全面剖析

    這篇文章主要介紹了vue中template模板編譯的過程全面剖析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue3如何使用ref獲取元素

    vue3如何使用ref獲取元素

    這篇文章主要介紹了vue3如何使用ref獲取元素,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • vant van-list下拉加載更多onload事件問題

    vant van-list下拉加載更多onload事件問題

    這篇文章主要介紹了vant van-list下拉加載更多onload事件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • vue3實現多條件搜索功能的示例代碼

    vue3實現多條件搜索功能的示例代碼

    搜索功能在后臺管理頁面中非常常見,這篇文章就著重講一下vue3-admin-element框架中如何實現一個頂部多條件搜索功能,感興趣的小伙伴可以了解一下
    2023-08-08
  • Vue學習筆記進階篇之vue-cli安裝及介紹

    Vue學習筆記進階篇之vue-cli安裝及介紹

    這篇文章主要介紹了Vue學習筆記進階篇之vue-cli安裝及介紹,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • VUE項目運行失敗原因及解決辦法圖解(以vscode為例)

    VUE項目運行失敗原因及解決辦法圖解(以vscode為例)

    記錄一下踩坑,前幾天從同事手上接手了一個Vue的項目,下面這篇文章主要給大家介紹了關于VUE項目運行失敗原因及解決辦法的相關資料,本文以vscode為例,需要的朋友可以參考下
    2023-06-06

最新評論

南汇区| 壶关县| 平陆县| 万盛区| 乌恰县| 大冶市| 乌拉特后旗| 嘉善县| 绥宁县| 荥阳市| 和平县| 梧州市| 云梦县| 广州市| 淳安县| 南陵县| 亳州市| 张家川| 周至县| 读书| 清苑县| 邯郸县| 攀枝花市| 磐安县| 库车县| 江北区| 宣恩县| 宁蒗| 乐昌市| 肃南| 龙海市| 宝兴县| 锡林浩特市| 额尔古纳市| 福泉市| 五原县| 德清县| 柳州市| 卓资县| 乳山市| 陇西县|