Highcharts提供了将图表系列数据导出到csv的示例。 (http://highcharts.uservoice.com/forums/55896-general/suggestions/2495153-export-chart-data-to-csv-excel-and-more-via-dat)
多次点击“警报CSV”按钮,您将开始看到每次点击都会复制系列名称,从而导致结构严重的csv输出。
我尝试使用unshift直接将系列名称添加到series.yData数组而不是列数组,但我收到相同的输出。
我也尝试添加series.name,只要它不是列数组的一部分,但也不起作用。 Unshift正在为每次单击将columns.name添加到columns数组中。
我读到非移位在I.E.中有一些问题。 8及更早,但我无法找到任何其他已知问题。
为什么每次调用csv下载时都会取消添加系列名称?
答案 0 :(得分:0)
在示例中,他们将xAxis.categories推送到空数组列。然后,他们在列的第一个元素上使用unshift,这也是xAxis.categories。 unshift修改它所使用的数组,与返回修改后的数组的其他函数不同。列中的元素是对xAxis.categories的同一对象的引用,因此它正在修改该数组。如果您在jsFiddle上调整窗格大小,触发图表重绘,这将是显而易见的。所有这些都适用于series.yData。
他们需要做的是制作xAxis.categories数组和series.yData的深层副本,而不是仅仅将其推入columns数组。
if (xAxis.categories) {
var tmpArr = [];
$.each(xAxis.categories, function(index, value) {
tmpArr.push(value);
});
columns.push(tmpArr);
columns[0].unshift("");
}
each (this.series, function (series) {
var tmpArr = [];
$.each(series.yData, function(index, value) {
tmpArr.push(value);
});
columns.push(tmpArr);
columns[columns.length - 1].unshift(series.name);
});
http://jsfiddle.net/cqjvD/102/
尽管使用jQuery合并可能也是一种更简单的方法。
if (xAxis.categories) {
columns.push($.merge([""], xAxis.categories);
}
each (this.series, function (series) {
columns.push($.merge([series.name], series.yData));
});
答案 1 :(得分:0)
您还可以在导出后移动值:http://jsfiddle.net/cqjvD/104/
each (this.series, function (series) {
series.yData.shift();
});
xAxis.categories.shift();