Vue:使用vue-json-excel导出数据到excel
发布日期:2021-06-30 15:49:13 浏览次数:2 分类:技术文章

本文共 3133 字,大约阅读时间需要 10 分钟。

使用方法

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或者csv 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标签中

导出

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这两个分别作用于开始下载之前和开始下载之后,可以用来控制显示下载进度条。

转载地址:https://kaisarh.blog.csdn.net/article/details/111034317 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Vue:embed结合ElementUI中dialog实现PDF文件预览
下一篇:ElementUI:dialog的遮罩层在弹出层的上面

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月09日 16时55分49秒