vue-json-excel官方文档
使用方法
1. 在项目中安装vue-json-excel
2. 在main.js中,将vue-json-excel在全局注册
1 2 3 4 | 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 |
| 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标签中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <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标签中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | 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. 重点参数具体使用
-
fields:规定导出数据中的字段名称与文件每一列列头名称的关系。可以使用callback回调函数的形式,对字段进行格式化。如果fields没有规定默认格式的话,会把所有的数据都导出。
举例:

-
data:需要导出的数据参数,数组中存储对象,每一个对象就是导出的一行数据,data中的键对应fields中的值。

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


- header、footer:规定导出信息页头页脚。
① 如果是一个字符串,则导出形式如下:


② 如果是一个字符串数组,则导出形式如下:


- worksheet:规定excel表格下方选项卡名称


- fetch、before-generate 、before-finish 这三个接收三个方法。
① fetch:点击下载按钮后立即执行,会在开始下载数据前执行。返回值为下载的数据。这里可以将函数定义为async函数,并在里面await暂停等待,请求数据,构造下载所需要的的数据。

② before-generate、before-finish这两个分别作用于开始下载之前和开始下载之后,可以用来控制显示下载进度条。









