由于echarts只有数据视图,并没有导出数据到excel表格的功能,研究了一会,发现我们可以自定义工具按钮,进行数据封装成table,然后我们把table导出成excel,实现起来很简单。
我这里把table转成excel是用到插件的,叫做table2excel.js,兼容所有的游览器,简单快捷,下载地址:https://github.com/rainabba/jquery-table2excel
1.首先看echarts的代码:
我是用dataset的方法填充的,当然不管你是什么方式的数据,只要你可以拿到数据,转变成table就行,只有你是动态的,你就可以转变成他变了
function majorTotle2(opt) {
var chartDom = document.getElementById('daochu');
var $charts = echarts.init(chartDom);
var option = {
tooltip : {},
dataset : {
source : opt.data
},
toolbox: {
left:'50',
show: true,
feature: {
myTool2: {
show: true,
title: '导出excel文件',
icon: 'image://../images/daochu.png',
onclick: function (){
//我们使用传入进来的opt,去构建table,由于我是dataset,所以我的数据结构是这样的,
// [
// ['product', '2015', '2016', '2017'],
// ['Matcha Latte', 43.3, 85.8, 93.7],
// ['Milk Tea', 83.1, 73.4, 55.1],
// ['Cheese Cocoa', 86.4, 65.2, 82.5],
// ['Walnut Brownie', 72.4, 53.9, 39.1]
// ]
var headData = opt.data;
var table = '
';
';for (var i = 0; i < headData.length; i++) {
var bodyData=headData[i];
table += '
'; ';for(var j=0;j<bodyData.length;j++){
table += '
' + bodyData[j] + ' ';}
table += '
}
table += '
$('#xiazai').html(table);//这里是把table放入html文件的隐藏div中,好让table2excel插件获取
//使用table2excel插件,用到table的id
$("#tableExcel_Day").table2excel({
exclude: ".noExl", //过滤位置的 css 类名
filename: '导出excel文件' + ".xls", //文件名称
name: "Excel Document Name.xls",
exclude_img: true,
exclude_links: true,
exclude_inputs: true
});
}
}
}
},
//。。。。。。。。省略一部分代码,关键代码是自定义工具
$charts.clear();
$charts.setOption(option);
}
2.HTML文件中我们要加入
style="display: none;" id="xiazai">//构建table//这里是为了支持ie9以下游览器,table2excel要求的,由于ie9以下游览器不支持Bold(),就用iframe的方式保存文件
3.不要忘记了添加这2个路径哦