Vue:使用vue-json-excel导出数据到excel
使用vue-json-excel导出数据到excel
·
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 或者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标签中
<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. 重点参数具体使用
-
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这两个分别作用于开始下载之前和开始下载之后,可以用来控制显示下载进度条。
更多推荐
已为社区贡献6条内容
所有评论(0)