как загрузить csv с диаграммами слияния в codeigniter

Я пытался использовать функцию ниже для создания CSV для загрузки, но я вижу, что могу получить данные 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?. Буду признателен за любую помощь в этом. Спасибо.


person Nishikant    schedule 03.09.2013    source источник
comment
я не уверен, что ваша логика (согласно приведенному выше коду) заключается в срабатывании оповещения, когда тип CSV. Поэтому, когда это csv, условие else не будет выполняться. Я что-то упустил?   -  person Pallab    schedule 03.09.2013
comment
if(type ==='CSV') потому что chartObj.exportChart({ exportAtClient: '1', exportFormat: type, exportAction: 'download' }); выдает ошибку, если я использую его для CSV   -  person Nishikant    schedule 03.09.2013
comment
exportChart и getDataAsCSV — это совершенно разные методы для разных целей.read< /а>   -  person Pallab    schedule 03.09.2013
comment
и почему-то exportChart не работает с CSV, есть мысли почему так   -  person Nishikant    schedule 03.09.2013
comment
Это связано с тем, что экспорт производится для форматов изображений или PDF. CSV не является форматом экспорта, это просто получение данных из диаграммы в виде строки CSV.   -  person Shamasis Bhattacharya    schedule 03.09.2013
comment
@Nishikant именно это я и хотел объяснить. :)   -  person Pallab    schedule 04.09.2013
comment
Кстати, здесь нет ничего общего с CodeIgniter.   -  person Bhargav Nanekalva    schedule 04.09.2013


Ответы (2)


Вы можете экспортировать CSV в виде загружаемого файла, закодировав строку CSV и используя методы загрузки для объекта тега привязки createElement. См. приведенный ниже код, который представляет собой небольшую модификацию вашей реализации.

См. мой jsFiddle, в котором используется FusionCharts V 3.3.1.

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?");
    }
}
person Bhargav Nanekalva    schedule 04.09.2013
comment
Большое спасибо, это сэкономило много времени. - person Nishikant; 04.09.2013

Нишикант,

FusionCharts не поддерживает данные CSV в качестве загружаемого варианта, как при экспорте изображений/pdf.

Таким образом, вместо того, чтобы показывать CSV в окне предупреждения, вы можете сохранить его в переменной, а затем отправить его в обработчик на стороне сервера (вам придется его создать), который вернет его в виде файла CSV.

person Rahul Kumar    schedule 04.09.2013