我有一个由dc.js和crossfilter.js完成的数据表,我想将该表导出为CSV文件.
dataTable.width(960).height(800) .dimension(by_id) .group(function(d) { return "" }) .size(data.length) .columns([ function(d) { return d.id; },function(d) { return d.name; },function(d) { return d.gender; },function(d) { return parseFloat(d.GPA).toFixed(2); },function(d) { return parseFloat(d.Major_GPA).toFixed(2); },function(d) { return parseFloat(d.Math_GPA).toFixed(2); },function(d) { return parseFloat(d.English_GPA).toFixed(2); },function(d) { return parseFloat(d.Science_GPA).toFixed(2); },function(d) { return parseFloat(d.Humanities_GPA).toFixed(2); } ]) .sortBy(function(d){ return d.id; }) .order(d3.ascending);
解决方法
这是一个常见的请求,所以我添加了一个使用
FileSaver.js的示例.(可能还有其他很好的方法可以从浏览器下载,但这是我熟悉的.)
http://dc-js.github.io/dc.js/examples/download-table.html
关键是使用dimension.top(Infinity)从表的维度中获取所有数据.然后,您可以使用d3.csv.format格式化它,并使用您首选的方法下载它.在这里,FileSaver使用Blobs作为机制:
var blob = new Blob([d3.csv.format(nameDim.top(Infinity))],{type: "text/csv;charset=utf-8"}); saveAs(blob,'data.csv');