vue-json-excel官方文档

使用方法

1. 在项目中安装vue-json-excel

npm install vue-json-excel -S

2. 在main.js中,将vue-json-excel在全局注册

import Vue from "vue";
import JsonExcel from "vue-json-excel";

Vue.component("downloadExcel", JsonExcel);

在这里插入图片描述

3. API参数解读

参数名参数类型描述默认值
data数组需要导出的参数
fields对象规定导出数据中的字段名称与文件每一列列头名称的关系。
要导出的JSON对象中的字段。如果没有提供,JSON中的所有属性将被导出。
export-fields (exportFields)对象解决与其他组件的命名冲突问题。
用于解决其他使用变量字段的组件(如vee-validate)的问题。exportFields的工作原理与字段完全相同
type字符串文件类型。xls或者csvxls
name字符串导出文件名称。data.xls
default-value (defaultValue)字符串如果某一行没有字段值时候起作用。
当行没有字段值时用作回退。
header字符串/数组 导出文件表格标题。
数据的标题。可以是字符串(一个标题)或字符串数组(多个标题)。
title(deprecated)字符串/数组 与header一样,为了向后兼容,我们也保留了title,但不建议使用它,因为它会与HTML5的title属性冲突。
footer字符串/数组 导出文件数据页脚。
可以是字符串(一个页脚)或字符串数组(多个页脚)。
’ ’
worksheet方法工作表选项卡的名称。‘Sheet1’
fetch方法在点击下载按钮后,开始下载之前执行的函数。
回调以获取数据下载之前,如果它被设置设置了,它将在点击鼠标之后立即执行(这个过程是在开始下载之前的)。重要提示:只有在没有定义数据道具的情况下才有效。
before-generate方法在生成/获取数据之前调用方法,例如:显示加载进度
before-finish方法在下载框弹出之前调用方法的回调,例如:隐藏加载进度
stringifyLongNum布尔类型长数字和十进制(解决数字精度丢失的问题),默认:false
escapeCsv布尔类型这将转义CSV值,以修复一些excel数字字段的问题。但这会用=" and "包装所有csv数据,以避免你不得不将这个道具设为假。默认值:真正的

4. 关键代码

1. template标签中

<download-excel
    :fields="exportDataStandard"
    :data="exportData"
    type="xls"
    :name="exportName"
    :header="exportHeader"
    :footer="exportFooter"
    :defaultValue="exportDefaultValue"
    :fetch="createExportData"
    :before-generate="startDownload"
    :before-finish="finishDownload"
    worksheet="导出信息"
>
  <el-button icon="el-icon-download">导出</el-button>
</download-excel>

2. script标签中

export default {
  name: "BMSStationInfo",
  components: {
    BMSStationInfoDetailInformation
  },
  data() {
    return {
      exportDataStandard: {
        "名称": "name",
        "性别": "sex",
        "地区": {
          field: "phone",
          callback: value => {
            return `他的电话是:${value}`
          }
        }
      },
      exportData: [
        {name: "甲", sex: "女", phone: 15521103211},
        {name: "乙", sex: "男", phone: 15521103222},
        {name: "丙", sex: "女", phone: 15521103233},
        {area: "北京市朝阳区"},
        {name: "丁", sex: "男", phone: 15521103233},
        {name: "丁", sex: "男", phone: 15521103233},
      ],
      exportName: "导出数据",
      exportHeader: ["用户信息页头1","用户信息页头2"],
      exportFooter: ["用户的信息页脚1","用户的信息页脚2"],
      exportDefaultValue: "这一行这一列没有数据"
    }
  },
  methods: {
    createExportData() {
      // 点击导出按钮之后,开始导出数据之前的执行函数,返回值为需要下载的数据
      // TODO:构造需要下载的数据返回
      return [
        {name: "甲", sex: "女", phone: 15521103211},
        {name: "乙", sex: "男", phone: 15521103222},
        {name: "丙", sex: "女", phone: 15521103233},
        {area: "北京市朝阳区"},
        {name: "丁", sex: "男", phone: 15521103233},
        {name: "丁", sex: "男", phone: 15521103233},
      ];
    },
    startDownload() {
      console.log("数据开始")
    },
    finishDownload() {
      console.log("数据下载完成")
    }
  }
}

5. 重点参数具体使用

  1. fields:规定导出数据中的字段名称与文件每一列列头名称的关系。可以使用callback回调函数的形式,对字段进行格式化。如果fields没有规定默认格式的话,会把所有的数据都导出。
    举例:
    在这里插入图片描述

  2. data:需要导出的数据参数,数组中存储对象,每一个对象就是导出的一行数据,data中的键对应fields中的值。
    在这里插入图片描述

  3. default-value:如果某一行中,没有fields中规定的默认数据的话,会导出默认值的值。如图中导出数据中的第三行,没有name、sex和phone,而设置的默认值为:“这一行这一列没有数据”,则导出的样式为:
    在这里插入图片描述

在这里插入图片描述

  1. header、footer:规定导出信息页头页脚。
    ① 如果是一个字符串,则导出形式如下:
    在这里插入图片描述
    在这里插入图片描述
    ② 如果是一个字符串数组,则导出形式如下:
    在这里插入图片描述
    在这里插入图片描述
  2. worksheet:规定excel表格下方选项卡名称
    在这里插入图片描述
    在这里插入图片描述
  3. fetch、before-generate 、before-finish 这三个接收三个方法。
    ① fetch:点击下载按钮后立即执行,会在开始下载数据前执行。返回值为下载的数据。这里可以将函数定义为async函数,并在里面await暂停等待,请求数据,构造下载所需要的的数据。
    在这里插入图片描述
    ② before-generate、before-finish这两个分别作用于开始下载之前和开始下载之后,可以用来控制显示下载进度条。
Logo

前往低代码交流专区

更多推荐