首頁 > 軟體

elementUI+Springboot實現匯出excel功能的全過程

2022-09-05 14:00:25

前言

在前面,我們其實已經完成了elementUI+springboot的匯入功能
springboot實現上傳並解析Excel過程解析
那麼,現在也對這個匯出功能進行一個彙總整理寫出來
其實,匯出功能相對匯入功能還是比較簡單,本次不需要考慮到後端

步驟

依賴包

首先,我們需要引入vue的依賴包
我用的是這個

npm install xlsx@^0.16.0
npm install file-saver@^2.0.2

其中xlsx依賴的作用為:將資料進行處理為excel工作簿
file-saver依賴的作用為:將檔案進行一個儲存匯出來

element表格table

這裡,實際上是用的elemenetUI的表格table標籤,獲取到資料,因此,我們需要對錶格新增一個選擇器
在我的專案中,我是新增了一個idexportExcel

<el-table :data="tableData" id="exportExcel" border style="width: 100%"></el-table>

tableData為自定義的接收後端傳過來的資料的變數

引入包

然後,在你需要編寫匯出功能的頁面,進行引入
具體如下:

import XLSX from "xlsx";
import FileSaver from "file-saver";

編寫方法

以下程式碼中,有一個

var xlxsParam = { raw: true };

這個的作用是不對資料進行處理
主要目的是為了防止把日期這種資料處理掉,導致顯示出錯

    // 匯出
    exportExcelData() {
      var xlxsParam = { raw: true };
      // 從表中生成工作簿
      var wb = XLSX.utils.table_to_book(
        document.querySelector("#exportExcel"),
        xlxsParam
      );
      // 獲取二進位制字串作為輸出
      var wbOut = XLSX.write(wb, {
        bookType: "xlsx",
        bookSST: true,
        type: "array",
      });
      try {
        FileSaver.saveAs(
          // Blob 物件表示一個不可變、原始資料的類檔案物件
          // Blob 表示的不一定是js的原生格式資料
          // File 介面基於Blob,
          // 返回一個新建立的Blob物件,其內容由引數中給定的陣列串聯
          new Blob([wbOut], { type: "application/octet-stream" }),
          // 匯出檔名稱
          "檔名稱.xlsx"
        );
      } catch (e) {
      // 捕捉報錯
        if (typeof console != "undefined") {
          console.log(e, wbOut);
        }
      }
      // 將結果返回出來,匯出檔案
      return wbOut;
    },

完整範例

完整範例如下:

<!--頁面-->
<template>
  <div>
  <!--匯出按鈕-->
  <el-button type="primary" @click="exportExcelData()">匯出</el-button>
  <!--table資料-->
      <el-table :data="tableData" id="exportExcel" border style="width: 100%">
      <el-table-column
        label="欄位1"
        type="欄位名稱"
        align="center"
      ></el-table-column>
      <el-table-column
        prop="欄位2"
        label="欄位名稱"
        align="center"
      ></el-table-column>
    </el-table>
  </div>
<template>
<!--邏輯-->
<script>
// 引入依賴
import FileSaver from "file-saver";
import XLSX from "xlsx";
export default {
  name: "newStaffRecord",
  data() {
    return {
      tableData: [], // 接收的後端資料變數
    };
  },
  methods: {
	    // 匯出
    exportExcelData() {
      var xlxsParam = { raw: true };
      // 從表中生成工作簿
      var wb = XLSX.utils.table_to_book(
        document.querySelector("#exportExcel"),
        xlxsParam
      );
      // 獲取二進位制字串作為輸出
      var wbOut = XLSX.write(wb, {
        bookType: "xlsx",
        bookSST: true,
        type: "array",
      });
      try {
        FileSaver.saveAs(
          // Blob 物件表示一個不可變、原始資料的類檔案物件
          // Blob 表示的不一定是js的原生格式資料
          // File 介面基於Blob,
          // 返回一個新建立的Blob物件,其內容由引數中給定的陣列串聯
          new Blob([wbOut], { type: "application/octet-stream" }),
          // 匯出檔名稱
          "新人培訓記錄.xlsx"
        );
      } catch (e) {
        if (typeof console != "undefined") {
          console.log(e, wbOut);
        }
      }
      return wbOut;
    },
	}
}
</script>


最終匯出結果

在我的專案需要做一個新人培訓記錄查詢匯入的功能,於是最終介面樣式為這樣

實際匯出後的結果為:

為保持隱私,我把姓名資料去掉了

結語

以上為elementUI實現匯出功能的過程

到此這篇關於elementUI+Springboot實現匯出excel功能的文章就介紹到這了,更多相關elementUI Springboot匯出excel內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com