2

我一直在尝试以下函数来生成 CSV 以供下载,但我看到的是我只能在alert.

function ExportMyChart(type) {
    var chartObj = getChartFromId('myChartIdAmount4');
    if( chartObj.hasRendered() ){
        if(type === 'CSV'){  
            alert(chartObj.getDataAsCSV());
        }else{
            chartObj.exportChart({ exportAtClient: '1',  exportFormat: type, exportAction: 'download' }); 
        }
    }
}

chartObj.exportChart不适用于 CSV,有什么办法可以使它适用于 CSV,因为它适用于 PDF、JPEG?我将不胜感激这方面的任何帮助。谢谢。

4

2 回答 2

2

您可以通过对 CSV 字符串进行编码并使用 createElement 锚标记对象的下载方法将 CSV 导出为可下载文件。请参阅下面的代码,这是对您的实现的轻微修改。

请参阅使用 FusionCharts V 3.3.1的我的jsFiddle

var exportMyChart = function (type) {
    var chartObj = FusionCharts('myChartIdAmount4');

    if (chartObj.hasRendered()) {
        if(type === 'CSV'){  
            var a = document.createElement('a');
            a.href = 'data:attachment/csv,' + encodeURIComponent(chartObj.getDataAsCSV());
            a.target = '_blank';
            a.download = 'export.csv';
            document.body.appendChild(a);
            a.click();
        }
        else{
            chartObj.exportChart({ exportAtClient: '1',  exportFormat: type, exportAction: 'download' });
        }
    }
    else{
        alert("What are you trying to export?");
    }
}
于 2013-09-04T05:42:15.640 回答
0

尼西康特,

FusionCharts 不支持将 CSV 数据作为可下载选项,因为它支持导出图像/pdf。

因此,您可以将其存储在一个变量中,而不是在警报窗口中显示 CSV,然后您可以将其发布到您的服务器端处理程序(您必须创建它),它将作为 CSV 文件返回。

于 2013-09-04T05:13:33.767 回答