一、需要安装三个依赖:
npm install -S file-saver xlsx
npm install -D script-loader
二、项目中新建文件夹(文件名excel)
里面放置两个文件Blob.js和 Export2Excel.js。
下载链接:链接:链接: https://pan.baidu.com/s/1-tH2heqVGqmVKKc07GJhqQ
提取码: acr7
复制这段内容后打开百度网盘手机App,操作更方便哦
三、在vue的methods方法中:
页面添加导出按钮,加入方法
封装js文件
下面是封装源码
export default {
/**
* @param {*} topmad 表头和展示数据 对象
* @param [*] arrlist 表格数据,记得深克隆一次以防止对元数据改变
* @param * name 表格名称
* @param * successCall 回调方法可做防抖,以及其他事件处理
*/
export2Excel(topmad, arrlist, name, successCall) {
// console.log(Object.values(topmad))
// console.log(Object.keys(topmad))
require.ensure([], () => {
const { export_json_to_excel } = require("../../excel/Export2Excel");
const tHeader = Object.values(topmad);//表头
// const tHeader = this.aksl;//表头
const filterVal = Object.keys(topmad);//表格展示数据
// const filterVal = [
// "useType",
// "operateUsername",
// "tradeAmount",
// ];
const list = arrlist;//表格数据
console.log(list)
const data = this.formatJson(filterVal, list);
// console.log(data)
export_json_to_excel(tHeader, data, name);
successCall && successCall();
});
},
formatJson(filterVal, jsonData) {
// console.log(filterVal)
// 时间撮在 createTime 对象里面
jsonData.forEach(item => {
if (item != '[object Object]') {
} else {
if (item.createTime) {
item.createTime = item.createTime.time
}
}
})
// console.log(jsonData)
return jsonData.map(v => filterVal.map(j => v[j]));
},
}
下面是使用方法,表头是对象的value,对象里面的key是对应表格数据数组里面的字段,
数据格式是list:[{name:value}],
exportreport(){
this.success = false;
let arrsss = {
index : this.$t('nowan1.No1.sequence'),
sellerName : this.$t('nowan1.No2.usebna'),
country : this.$t('nowan1.No1.Merchants'),
contracts : this.$t('nowan1.No2.seek'),
contractNumber : this.$t('nowan1.No2.generated'),
hebing : this.$t('nowan1.uit.wipagehwei'),
usedLimit : this.$t('nowan1.uit.wipagehrei'),
orderCount : this.$t('nowan1.No2.generated1'),
orderPaidAmount : this.$t('nowan1.No2.pagename'),
freeAm : this.$t('nowan1.uit.accountBalance'),
}
let name = this.$t('nowan1.No2.management');
let list = JSON.parse(JSON.stringify(this.Settlemen));//这里是整个数据组,这里做深克隆原因是防止在封装的js文件里判断时间撮createTime 对象的时候对原数据组更改
this.$utils.commonUtils.export2Excel(arrsss,list,name,()=>{setTimeout(()=>{this.success = true;},3000)});
}
觉得好用就给点个赞吧