首頁 > Java > java教程 > 主體

怎麼用elementUI+Springboot實作導出excel功能

WBOY
發布: 2023-05-18 19:19:20
轉載
856 人瀏覽過

步驟

依賴套件

首先,我們需要引入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 ></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 >
      <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+Springboot實作導出excel功能

實際導出後的結果為:

怎麼用elementUI+Springboot實作導出excel功能

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

怎麼用elementUI+Springboot實作導出excel功能

#

以上是怎麼用elementUI+Springboot實作導出excel功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!