Highcharts:我可以向用户导出驱动图表的原始数据的Excel或CSV吗?

Highcharts:我可以向用户导出驱动图表的原始数据的Excel或CSV吗?,excel,csv,highcharts,export,Excel,Csv,Highcharts,Export,我有通过WP AdCenter插件通过HighCharts生成的图表。我希望用户(管理员和订阅者一样)能够下载原始数据,以Excel或CSV格式驱动图表,而不仅仅是图表的PNG、JPG或PDF图像。有没有一种方法可以做到这一点而不需要对代码进行太严重的修改(我不是PHP程序员)。这个附加的导出选项是不是在不久的将来可以推出的功能?您可以在HighCharts的范围之外进行。您可以随时提取series.data值,并在页面上的javascript中进行迭代以生成CSV。或者您可以在后端提前执行此操

我有通过WP AdCenter插件通过HighCharts生成的图表。我希望用户(管理员和订阅者一样)能够下载原始数据,以Excel或CSV格式驱动图表,而不仅仅是图表的PNG、JPG或PDF图像。有没有一种方法可以做到这一点而不需要对代码进行太严重的修改(我不是PHP程序员)。这个附加的导出选项是不是在不久的将来可以推出的功能?

您可以在HighCharts的范围之外进行。您可以随时提取series.data值,并在页面上的javascript中进行迭代以生成CSV。或者您可以在后端提前执行此操作。

您可以添加导出按钮()和prepare函数,该函数将从图表(保存在chart.series对象中)获取所有值,并推送到字符串/数组。然后,您需要找到一个解决方案,如何用javascript“生成”文件,并用数组/字符串填充它

这将帮助您从highchart创建excel。 添加到导出菜单的下载CSV选项可以正常工作。只要经历这些,你自己就会做得更好

代码如下:

/**
 * A small plugin for getting the CSV of a categorized chart
 */
(function (Highcharts) {

    // Options
    var itemDelimiter = ',',  // use ';' for direct import to Excel
        lineDelimiter = '\n';

    var each = Highcharts.each;
    Highcharts.Chart.prototype.getCSV = function () {
        var xAxis = this.xAxis[0],
            columns = [],
            line,
            csv = "", 
            row,
            col;

        if (xAxis.categories) {
            columns.push(xAxis.categories);
            columns[0].unshift("");
        }
        each (this.series, function (series) {
            columns.push(series.yData);
            columns[columns.length - 1].unshift(series.name);
        });

        // Transform the columns to CSV
        for (row = 0; row < columns[0].length; row++) {
            line = [];
            for (col = 0; col < columns.length; col++) {
                line.push(columns[col][row]);
            }
            csv += line.join(itemDelimiter) + lineDelimiter;
        }
        return csv;
    };    
}(Highcharts));

// Now we want to add "Download CSV" to the exporting menu. We post the CSV
// to a simple PHP script that returns it with a content-type header as a 
// downloadable file.
// The source code for the PHP script can be viewed at 
// https://raw.github.com/highslide-software/highcharts.com/master/studies/csv-export/csv.php

Highcharts.getOptions().exporting.buttons.contextButton.menuItems.push({
    text: 'Download CSV',
    onclick: function () {
        Highcharts.post('http://www.highcharts.com/studies/csv-export/csv.php', {
            csv: this.getCSV()
        });
    }
});



var chart = new Highcharts.Chart({

    chart: {
        renderTo: 'container'
    },

    xAxis: {
        categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    },

    series: [{
        data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
    }]

});

$('#getcsv').click(function () {
    alert(chart.getCSV());
});
/**
*一个小插件,用于获取分类图表的CSV
*/
(功能(高图){
//选择权
var itemdimiter=',',//使用“;”直接导入Excel
lineDelimiter='\n';
var each=Highcharts.each;
Highcharts.Chart.prototype.getCSV=函数(){
var xAxis=this.xAxis[0],
列=[],
行,,
csv=“”,
一行
上校;
if(xAxis.categories){
columns.push(xAxis.categories);
列[0]。取消移位(“”);
}
每个(本系列,功能(系列){
columns.push(series.yData);
columns[columns.length-1].unshift(series.name);
});
//将列转换为CSV
对于(行=0;行<列[0]。长度;行++){
行=[];
for(col=0;col
页面上是否有在JavaScript中生成CSV的示例代码,这样我就不必依赖HighCharts(他们删除了我以前使用过的CSV.php文件)供参考-上面的代码每次运行时都会不断修改xAxis.categories…列[0].unshift(“”)使我以后每次导出到CSV,会有一个额外的标题。要解决此问题,请执行以下操作:columns.push(xAxis.categories.slice(0));克隆xAxis.categories以便修改新数组。这看起来很棒。但是,在玩了很久之后,我收到了一条错误消息,说:“'undefined'不是一个对象(评估'Highcharts.getOptions().exporting.buttons.contextButton.menuItems')。你知道这是什么,以及如何解决吗?谢谢你的提示@LuftiKus:您正在尝试将新项目添加到菜单中吗?你能把你的作品拿一把吗?@osyan:啊,我现在明白了。它必须使用“导出old look.src.js”(以便有两个图标用于打印和下载)。这不管用。必须使用Highcharts版本3的新“常规”按钮;那就行了。谢谢