当前位置: 首页 > 工具软件 > s-json > 使用案例 >

vue项目中导出excel文件(使用第三方依赖vue-json-excel)

袁成化
2023-12-01

资源包网址:GitHub - jecovier/vue-json-excelhttps://github.com/jecovier/vue-json-excel

参数列表:

参数类型说明默认值
dataArray要导出的数据。
fieldsObject要导出的 JSON 对象中的字段。如果未提供,则将导出 JSON 中的所有属性。
export-fields (exportFields)Object用于修复使用变量字段的其他组件(如 vee 验证)的问题。导出字段的工作方式与字段完全相同
typestringMime类型[xls, csv]xls
namestring要导出的文件名。data.xls
headerstring/Array数据的标题。可以是字符串(一个标题)或字符串数组(多个标题)。
title(deprecated)string/Array与标题相同,出于复古兼容性目的,保留标题,但由于与 HTML5 title 属性冲突,不建议使用标题。
footerstring/Array数据的页脚。可以是字符串(一个页脚)或字符串数组(多个页脚)。
default-value (defaultValue)string当行没有字段值时,用作回退。''
worksheetstring工作表选项卡的名称。'Sheet1'
fetchFunction

在下载之前回调获取数据,如果它被设置,它会在鼠标按下后和下载之前立即运行。

重要提示:只有在没有定义数据道具的情况下才有效。

before-generateFunction在生成/获取数据之前调用一个方法,例如:显示加载进度
before-finishFunction回调在下载框弹出之前调用一个方法,例如:隐藏加载进度
stringifyLongNumBoolean字符串化长数字和小数(解决数字准确性损失的问题),默认值:false
escapeCsvBoolean这将转义CSV值,以修复一些数字字段的excel问题。但这会用=" and "包装每个csv数据,为了避免你必须将该道具设置为false。默认值:真正的

1.安装 vue-json-excel 

npm install vue-json-excel -S

2.全局引入vue-json-excel

//该文件为main.js
import Vue from "vue";
import JsonExcel from "vue-json-excel";

Vue.component("downloadExcel", JsonExcel);

3.在需要导出excel文件的组件中使用downloadExcel组件

<template>
    <download-excel
      :fetch="fetchData"
      :fields="json_fields"
      worksheet="My Worksheet"
      name="导出的文件名字.xls"
      class="excel"
    >
        <el-button size="mini" class="el-icon-download"></el-button>
    </download-excel>
</template>

<script type="text/javascript">
export default {
  data() {
    return {
      list:[],
      json_fields: {},
    };
  },
  methods: {
    fetchData() {
      this.json_fields = {//表头名:对应表格数据中的属性名
        创建时间: "CREATED_TIME",
        集团名称: "Group_Name",
        公司名称: "Corp_Name",
        部门名称: "Dept_Name",
        创建人: "CREATED_BY",
        集团备注: "Group_Memo",
        公司备注: "Corp_Memo",
        部门备注: "Dept_Memo",
        状态: {
                field: "Status",
                callback: (value) => {
                return value === true ? "启用" : "禁用";
            },
      },
      };
      let excelList = [];
      //this.list是从后台接口获取的一个三级数据(注意:使用forEach前,先判断数组存不存在!)
      this.list.forEach((item) => {
        excelList.push(item);
        if (item.CorpList) {
          item.CorpList.forEach((item1) => {
            excelList.push(item1);
            if (item1.DeptList) {
              item1.DeptList.forEach((item2) => {
                excelList.push(item2);
              });
            }
          });
        }
      });
      return excelList ;
    },
};
</script>

4.点击导出按钮,浏览器自动下载excel文件。

 类似资料: