我需要将 jquery 图表转换为 csv 文件。你能帮我完成这个功能吗?我都准备好了图表,但我找不到将我的图表转换为 csv 并下载它的功能。实际上我在这里找到了这个选项:
http://flotr.googlecode.com/svn/trunk/flotr/examples/prototype/data-download.html
但没有代码。谢谢
我需要将 jquery 图表转换为 csv 文件。你能帮我完成这个功能吗?我都准备好了图表,但我找不到将我的图表转换为 csv 并下载它的功能。实际上我在这里找到了这个选项:
http://flotr.googlecode.com/svn/trunk/flotr/examples/prototype/data-download.html
但没有代码。谢谢
Just looked in the source of the page and got you the function that is doing the magic there. May it helps you -
/**
* Converts the data into CSV in order to download a file
*/
downloadCSV: function(){
var i, csv = '',
series = this.series,
options = this.options,
dg = this.loadDataGrid(),
separator = encodeURIComponent(options.spreadsheet.csvFileSeparator);
if (options.spreadsheet.decimalSeparator === options.spreadsheet.csvFileSeparator) {
throw "The decimal separator is the same as the column separator ("+options.spreadsheet.decimalSeparator+")";
}
// The first row
for (i = 0; i < series.length; ++i) {
csv += separator+'"'+(series[i].label || String.fromCharCode(65+i)).replace(/\"/g, '\\"')+'"';
}
csv += "%0D%0A"; // \r\n
// For each row
for (i = 0; i < dg.length; ++i) {
var rowLabel = '';
// The first column
if (options.xaxis.ticks) {
var tick = options.xaxis.ticks.find(function(x){return x[0] == dg[i][0]});
if (tick) rowLabel = tick[1];
}
else if (options.spreadsheet.tickFormatter){
rowLabel = options.spreadsheet.tickFormatter(dg[i][0]);
}
else {
rowLabel = options.xaxis.tickFormatter(dg[i][0]);
}
rowLabel = '"'+(rowLabel+'').replace(/\"/g, '\\"')+'"';
var numbers = dg[i].slice(1).join(separator);
if (options.spreadsheet.decimalSeparator !== '.') {
numbers = numbers.replace(/\./g, options.spreadsheet.decimalSeparator);
}
csv += rowLabel+separator+numbers+"%0D%0A"; // \t and \r\n
}
if (Prototype.Browser.IE && !Flotr.isIE9) {
csv = csv.replace(new RegExp(separator, 'g'), decodeURIComponent(separator)).replace(/%0A/g, '\n').replace(/%0D/g, '\r');
window.open().document.write(csv);
}
else window.open('data:text/csv,'+csv);
}
});
If you have problems with this code here's a link to the whole source - Flotr
You could also get the Table with the class "flotr-datagrid" and convert it in JavaScript (HowTo) or send it via PostBack to your asp server and do the magic serverside via C#.