2020-11-03

vue项目中把echart中的数据导出成Excel的格式
本次借鉴了此文章然后做了一些改动。
由于项目需要把使用echart做的统计数据导出成Excel的格式,刚开始不知道怎么做,经过网上查询也没找到VUE项目关于echart统计数据导出Excel的形式,这里主要用到了jquery和jquery的一个导出Excel的插件jquery-table2excel.js,
首先要全局引入jquery 具体引入参考这边文章vue项目引入jquery,然后是把jquery-table2excel.js引入到项目中,把下载的jquery-table2excel.js文件放在项目文件名为static的文件名下面,由于jquery-table2excel.js文件是采用es5的形式来写的,未采用export dafault xxx 的形式来写,因此要对源文件进项改写,改写很简单,把立即执行函数,把原先的(function(){})改写成function table2excel(){},然后调用次函数
具体如下图所示
在这里插入图片描述
调用,然后以export default的形式来暴露出来
在这里插入图片描述
然后就可以在本地项目的组件中调用了,
使用import from …/…/static/jquery-table2excel.js来引入。
之后是导出Excel格式的数据
主要是在echart中的toolbox来进行改写,具体如下图所示:

var linechar=this.$refs.tzlfx;
            if(linechar){
                this.charts = echarts.init(linechar);
                this.charts.setOption({
                    toolbox:{
                        show:true,
                        feature:{
                            dataView:{
                                title:'数据视图',
                                readOnly:false,
                                show:true,
                                lang:['数据视图','关闭','导出Excel'],
                                contentToOption:function(opts){
                                    $('#tableExcel_Day').table2excel({
                                        exclude:'.noExl',
                                        filename:'不同强度的TC年频数变化',
                                        name:'Excel Document Name',
                                        fileext:'.xlsx',
                                        exclude_img:false,
                                        exclude_links:false,
                                        exclude_inputs:false
                                    });
                                },
                                optionToContent:function(opt){
                                    var axisData = opt.xAxis[0].data;//坐标数据
                                    var series = opt.series;//数据
                                    var tdHeads = '<td style="padding:0 10px">年份</td>';//表头第一列
                                    var tdBodys = '';//表数据

                                    var nameData = new Array('SuperTY','STY','TY','STS','TS','TD')
                                    for(var i=0;i<nameData.length;i++){
                                        tdHeads+='<td style="padding:0 10px">'+nameData[i]+'</td>'
                                    }
                                    var table = '<table id="tableExcel_Day" border="1" class="table-bordered table-striped" style="width:100%;text-align:center" ><tbody><tr>' + tdHeads + ' </tr>';
                                    //绘制表数据
                                    for(var i=0;i<axisData.length;i++){
                                        for(var j=0;j<series.length;j++){
                                            var temp=series[j].data[i];
                                            if(temp != null && temp != undefined){
                                                tdBodys += '<td>' + temp +'</td>'
                                            }else{
                                                tdBodys += '<td></td>'
                                            }
                                        }
                                        table += '<tr><td style="padding:0 10px">'+ axisData[i] + '</td>' + tdBodys + '</tr>' ;
                                        tdBodys = '';
                                    }
                                    table += '</tbody></table>';
                                    return table
                                },
                            }
                        },
                        padding:[13,160,15,20]
                    },
                    title:{
                        text:'不同强度TC年变化趋势',
                        left:'center',
                        top:15
                    },
                    tooltip:{
                        trigger:'axis',
                    },
                    color:['red','purple','orange','yellow','blue','green'],
                    legend:{
                        data:['SuperTY','STY','TY','STS','TS','TD'],
                        orient:'vertical',
                        x:'right',
                        padding:[5,60,15,20]
                    },
                    xAxis:{
                        type:'category',
                        data:this.years,
                        name:'年份'
                    },
                    yAxis:{
                        type:'value',
                        name:'频数'
                    },
                    series:[
                        {
                            name:'SuperTY',
                            type:'line',
                            data:this.superTY_year,
                            smooth:true
                        },
                        {
                            name:'STY',
                            type:'line',
                            data:this.sty_year,
                            smooth:true
                        },
                        {
                            name:'TY',
                            type:'line',
                            data:this.ty_year,
                            smooth:true
                        },
                        {
                            name:'STS',
                            type:'line',
                            data:this.sts_year,
                            smooth:true
                        },
                        {
                            name:'TS',
                            type:'line',
                            data:this.ts_year,
                            smooth:true
                        },
                        {
                            name:'TD',
                            type:'line',
                            data:this.td_year,
                            smooth:true
                            
                        },
                    ]
                },true)
            }

结果展示
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值