VUE2 + ElementUI 将Table数据导出为Excel文件——vue-json-excel

背景

使用vue-json-excel在前端实现表格数据的导出

安装

npm install vue-json-excel --save

全局注册

频繁使用的情境下

javascript 复制代码
import Vue from 'vue';
import JsonExcel from 'vue-json-excel';

Vue.component('downloadExcel', JsonExcel);

单文件使用

可直接复制

xml 复制代码
<!--封装好的下载组件-->
<template>
    <vue-json-excel ref="excelDownloader" :data="tableData" :fields="downloadFields" :name="exportName"
        :before-generate="beforeGenerate" :before-finish="beforeFinish">
        <el-button icon="el-icon-download" type="success">{{ downloadText }}
        </el-button>
    </vue-json-excel>
</template>

<script>
// 1. 引入插件
import VueJsonExcel from 'vue-json-excel'

export default {
    name: "Download",
    components: {
        VueJsonExcel
    },
    props: {
        downloadText: {
            type: String,
            default: "导出当前数据"
        },
        tableData: {
            type: Array,
            default: () => []
        },
        columns: {
            type: Array,
            default: () => []
        },
        exportName:{
            type: String,
            default: "下载文件"
        }
    },
    data() {
        return {
            downloadFields: {},
        }
    },
    mounted() {
    // 将表格列转换成json的格式, 例如 :{ 姓名: 'name', 年龄:'age'}
        this.downloadFields = this.columns.reduce((prev, cur) => {
            prev[cur.label] = cur.prop
            return prev
        }, {})

    },
    methods: {
    // 导出前准备工作
        beforeGenerate() {
            if (this.tableData.length === 0) {
                this.$message.error('表格数据为空')
                return false
            }
            return true
        },
    // 导出完成后的前置工作
        beforeFinish() {
            this.$message.success("导出成功");
            return true
        },

    }
}
</script>

主要配置项

属性名 类型 描述 默认值 是否必填
data Array 要导出的JSON数据源 ---
fields Object 定义导出的列。对象的键是Excel表头,值是对应的JSON数据字段名。如果不提供,将导出数据对象的所有字段 ---
name String 导出的文件名 data.xls
type String 导出的文件类型,可选 xlscsv xls
header String/Array 在表格数据上方添加额外的标题行 ---
footer String/Array 在表格数据下方添加额外的脚注行 ---
worksheet String Excel工作表的名称 Sheet1
default-value String 当数据中的某个字段为空时,使用的默认值 ''(空字符串)
fetch Function 高级用法:一个异步函数,点击按钮时触发,用于动态获取数据。注意 :如果同时设置了 data 属性,fetch 不会执行 ---
before-generate Function 开始生成文件前的回调函数,常用于显示加载状态 ---
before-finish Function 文件生成完成、即将弹出下载前的回调函数,常用于隐藏加载状态 ---
相关推荐
忆往wu前17 分钟前
从0到1一步步拆解搭建,梳理一个 Vue3 简易图书后台全开发流程
前端·javascript·vue.js
木斯佳24 分钟前
前端八股文面经大全:字节抖音前端三面(2026-04-27)·面经深度解析
前端·面试·笔试·八股·面经
光影少年1 小时前
大屏页面,一次多个请求,请求加密导致 点击 全局时间选择器 时出现卡顿咋解决(面板收起会延迟1~2秒)
前端·javascript·vue.js·学习·前端框架·echarts·reactjs
Mr.mjw1 小时前
vue中封装一个环形进度条组件,根据外部盒子大小自适应变化
前端·javascript·vue.js
无心使然1 小时前
Openlayers调用ArcGis影像服务之一动态地图、地图切片(/exportImage)
前端·javascript·数据可视化
唯火锅不可辜负1 小时前
uniapp开发公众号订阅功能踩坑小记
前端·vue.js
opteOG2 小时前
游览器跨域问题详解
前端
SameX2 小时前
后台 GPS 记录从半天掉电 30% 到全天 8%,我的三版方案演进
前端
Cder2 小时前
用 React + Ink 在终端里「优雅搜索」:开源 CLI 设计与非交互模式实践
前端·agent
像我这样帅的人丶你还2 小时前
前端监控体系与实践(二):全局监控
前端·javascript·vue.js