将dc.js dataTable中的数据导出为CSV

Ms.*_*s.J 7 javascript csv crossfilter dc.js

我有一个由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);
Run Code Online (Sandbox Code Playgroud)

Gor*_*don 9

这是一个常见的请求,所以我使用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');
Run Code Online (Sandbox Code Playgroud)