91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue怎么實現excel表格的導入導出

發布時間:2023-04-11 16:16:03 來源:億速云 閱讀:125 作者:iii 欄目:開發技術

這篇文章主要介紹“vue怎么實現excel表格的導入導出”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“vue怎么實現excel表格的導入導出”文章能幫助大家解決問題。

一、下載xlsx插件

npm i xlsx

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

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

三、把選擇的Excel文件把文件內容轉化為二進制

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

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

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

五、通過xlsx.utils.sheet_to_json()把表格一中的數據轉化為JSON格式

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

六、把讀取的JSON數據轉化為可以傳遞給服務器的數據

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

導出

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

關于“vue怎么實現excel表格的導入導出”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

澄江县| 孟州市| 泗阳县| 若羌县| 汶上县| 积石山| 随州市| 瓮安县| 衡东县| 青浦区| 墨玉县| 榕江县| 博爱县| 库伦旗| 泸定县| 定陶县| 铜川市| 禹州市| 万山特区| 什邡市| 龙岩市| 会宁县| 武胜县| 邯郸市| 宜黄县| 安阳县| 云浮市| 龙川县| 南雄市| 永修县| 闵行区| 新沂市| 二手房| 文化| 麟游县| 曲靖市| 汨罗市| 杨浦区| 乳源| 安陆市| 遵化市|