将Echarts的数据视图展示为table并且导出Excel

Echarts官网示例,用过Echarts的小伙伴都知道,它带有自己很多原生功能,比如简单举例:
在这里插入图片描述
想要详细了解可以去官网看配置项,今天主要说一下图中蓝色框的‘数据视图’这个功能,如下是官网上这个功能按钮所展示的数据视图:
在这里插入图片描述
现在项目有需求,就是客户既要看到这个折线图,又要看到数据展示,当然这个已经实现展示了,只不过没有样式,要求是整齐的table表格,而且还能导出这个table。
当然方式很多,可以将数据拿出来,单独写一个table,然后写一个导出功能,但是这样未免麻烦,而且echarts本身也可以hold住这样的功能,如下是我项目中折线图用到的代码:

myCharts.setOption({
                tooltip: {
                    trigger: 'axis'
                },
                legend: {
                    data: legends,   // 我的外部legend数组
                    y: '25px',       // legend位置
                },
                toolbox: {
                    show: true,
                    right: '13px',
                    top: '-7px',
                    feature: {
                        dataZoom: {
                            yAxisIndex: 'none',
                            show:false
                        },
                        magicType: {
                            type: ['bar'],
                            title: {bar: '柱状图'}
                        },
                        restore: {},
                        saveAsImage: {},
                    },
                },
                grid: {        // 图的上下左右边距
                    x: '8%',
                    y: '13%',
                    x2: '6%',
                    y2: '6%'
                },
                xAxis:  {
                    type: 'category',
                    boundaryGap: false,
                    data: lineX,
                    axisLine:{
                        lineStyle:{
                            color:'#3db3ff',
                        }
                    }
                },
                yAxis: {
                    type: 'value',
                    axisLabel: {
                        formatter: '{value}'
                    },
                    axisLine:{
                        lineStyle:{
                            color:'#3db3ff',
                        }
                    }
                },
                series: serie     // 我的数据源,有疑问看官方折线图示例即可
            }, true)

这样写就是和官方一模一样的效果了,现在,我们进行数据视图的样式修改和导出,主要是toolbox里面增加:

toolbox: {
   show: true,
    right: '13px',
    top: '-7px',
    feature: {
        dataZoom: {
            yAxisIndex: 'none',
            show:false
        },
        magicType: {
            type: ['bar'],
            title: {bar: '柱状图'}
        },
        restore: {},
        saveAsImage: {},
        /echarts tool封装导出Excel
        dataView: {
            show: true,
            title: '表格数据',
            lang: ['表格数据:', '关闭', '导出Excel'],    // 按钮
            icon:"image://image/excel.png",             // ‘数据视图’按钮自定义img
            contentToOption: function (opts) {
                $("#tempChart").table2excel({           // 下载jquery.table2excel.js,引入,$("#tempChart")是Echarts容器
                    exclude: ".noExl", //过滤位置的 css 类名, 有class = “noExl” 的行不被导出
                    filename: '电容柜——' + currentDevName + ".xls", // 文件名称
                    name: "Excel Document Name.xls",
                    exclude_img: true,
                    exclude_links: true,
                    exclude_inputs: true
                });
            },
            // 数据视图展示为table
            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("A相电流", "B相电流", "C相电流", "A相电压", "B相电压", "C相电压");
                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.toFixed(2) + '</td>';      
                        } else {
                            tdBodys += '<td></td>';
                        }
                    }
                    table += '<tr><td style="padding: 0 10px">' + axisData[i] + '</td>' + tdBodys + '</tr>';
                    tdBodys = '';
                }
                table += '</tbody></table>';                                  
                return table;
            }
        }
        
    },
},

由代码不难看出,这是渲染了一个table,渲染完效果如下所示:
这是数据视图按钮自定义图标
点击展示:
在这里插入图片描述
可以看到,现在展示的数据视图便是很整齐的table,下方两个按钮,一个关闭数据视图,一个导出table,导出功能下载一个jquery.table2excel.js下载地址的文件引入,按照图中所示使用。表格上方有四个按钮的一半是位置没调整好,微调即可。

做人,最重要的是开心嘛,der
在这里插入图片描述

  • 6
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
在Django中使用el-table导出Excel可以通过以下步骤实现。 首先,在views.py中创建一个视图函数来处理导出Excel的请求。在该函数中,我们需要引入必要的模块和库来生成Excel文件。可以使用第三方库xlwt来实现这个功能。 接下来,我们需要获取需要导出数据,并将其转换为Excel格式。可以使用Django的查询语法来获取数据,并使用xlwt库将数据写入Excel文件。需要注意的是,el-table的列名和数据字段应该相对应。 在视图函数中,首先需要设置HttpResponse的Content-Type为Excel格式,并设置Content-Disposition为attachment,以便浏览器将其识别为可下载的文件。然后,创建一个Workbook对象,并在其中创建一个Worksheet对象。 接着,我们将el-table的列名写入Excel文件的第一行。使用xlwt的write方法,可以将数据按照el-table定义的字段顺序写入Excel文件的每一行。 最后,将Workbook对象保存为一个临时文件,并将其通过HttpResponse返回给前端浏览器。 在前端部分,我们可以使用axios来发送一个POST请求来触发导出Excel的操作。在请求中,我们需要指定导出Excel的URL,并为请求头设置相应的参数,以便服务器正确识别请求。 最后,需要通过浏览器的下载功能来下载生成的Excel文件。 总结一下,要在Django中使用el-table导出Excel,需要在后端编写一个视图函数来处理导出请求,并在前端发送一个POST请求来触发导出操作。在后端视图函数中,需要调用xlwt库来生成Excel文件并将其返回给前端。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值