Element-ui,Vue表格导出生成Excel表

Vue+Element实现表单数据为Excel表

这可能是个经常见到的需求,但是实现还是很容易出问题的,首先看一下模板效果
在这里插入图片描述
生成的Excel表详情如图
在这里插入图片描述

在实现这个功能的时候需要两个文件,分别为Blob.js和Export2Excel.js文件,百度网盘下载地址:链接: https://pan.baidu.com/s/1sXMEce5MbTOvgf1yFvd5IQ 密码: qvi7 (有这两个文件),下载完成以后,创建一个新的文件夹Excel,将这两个文件放入此文件中。

  1. 将两个文件下载好以后,打开Export2Excel.js,添加Blob.js的引用地址,如图,我将两个文件放在了src下新建的excel的文件夹中,所以此处的地址可根据自己实际情况进行引用。此处路径需谨慎,不然会报错。
    在这里插入图片描述
    我的文件夹结构展示
    在这里插入图片描述

2.代码实现

<!--给相应的按钮添加事件函数-->
<el-button @click="exportExcel()" type="danger" >导出Excel</el-button>
<!--exportExcel事件使用方法-->
exportExcel() {
      require.ensure([], () => {
        const { export_json_to_excel } = require('@/excel/Export2Excel');   // 请求Export2Excel的文件地址,
        const tHeader = ['交货单', '客户代码', '客户名称', '状态', '付款金额','付款方式']; // tHeader的数组中存放Excel表格的每一列的标题
        const filterVal = ['DocNum', 'CardCode', 'CardName',"State",'DocTotal','PayType']; 
        //filterVal 存放需要导出到Excel表的字段名
        // 上面的DocNum、CardCode、CardName是tableData里对象的属性
        const list = this.tableData;  //把data里的tableData存到list
        const data = this.formatJson(filterVal, list);   //将数据写入到Excel表中
        /*console.log(data);     */
        export_json_to_excel(tHeader, data, '银行数据流水报表');   //生成Excel表的文件名
      })
    }


const { export_json_to_excel } = require(’@/excel/Export2Excel’); 这个地址容易出错,需要参考项目文件中build文件下的webpack.base.conf.js中的 alias 的配置,如图

在这里插入图片描述

其次在生成Excel表格的时候,某些字段是动态的,这个例子中的字段是“退款状态”:State,需要做判断,因此需要map数组来实现,这样嵌套不会

formatJson(filterVal, jsonData) {    //formatJson是存放导出数据字段的
      return jsonData.map(v => 
      	filterVal.map(
      		j => {
      		    //如果有需要做判断的字段条件,就做个判断,如果不需要直接return v[j];即可
      			/*if(j=='State'){
      				//假如有三种状态:已付款=1,未付款=-1,已退款=0
      				//return v[j]=='1'?'已付款':(v[j]=='-1'?'未付款':'已退款');//假如有三个状态判断条件,就这样写
      		    	return	v[j]=='-1'?'已退款':'已付款';
      				}else{
      				return v[j];
      			}*/
      			return v[j];
      		})      		
      );
    },
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值