如何在无限行模型(无限滚动)的情况下导出AgGrid数据

时间:2017-07-04 16:20:48

标签: export-to-csv infinite-scroll ag-grid

如果在无限行模型(无限滚动)的情况下我如何导出AgGrid数据。 对于普通的行模型,它是以这种方式完成的:

this.gridOptions.api.exportDataAsCsv(PARAMS);

无限行模型案例怎么样?

1 个答案:

答案 0 :(得分:3)

这是我实施的解决方案。 这里不考虑网格页脚,多个标题。 此代码适用于带有标题和行的简单网格。 如果是无限滚动和动态列(在某些情况下可以更改列)。

var LINE_SEPARATOR = '\r\n';
var COLUMN_SEPARATOR = ',';
var fileName = 'export.csv';

let csvString = '';
let columnsToExport = this.gridOptions.api.columnController.getAllDisplayedColumns();

// adding column headers.
columnsToExport.map((column) => {
  csvString+= column.colDef.headerName;
  csvString+= COLUMN_SEPARATOR;
});
csvString+= LINE_SEPARATOR;

// adding content of data currently loaded in the grid.
this.gridOptions.api.forEachNode( function(node) {
  node.columnController.allDisplayedColumns.map((column) => {
    let cellContent = node.valueService.getValue(column, node);
    csvString+= (cellContent != null) ? cellContent : "";
    csvString+= COLUMN_SEPARATOR;
  });
  csvString+= LINE_SEPARATOR;
});

// for Excel, we need \ufeff at the start
var blobObj = new Blob(["\ufeff", csvString], {
    type: "text/csv;charset=utf-8;"
});
// Internet Explorer
if (window.navigator.msSaveOrOpenBlob) {
    window.navigator.msSaveOrOpenBlob(blobObj, fileName);
}
else {
    // Chrome
    var downloadLink = document.createElement("a");
    downloadLink.href = window.URL.createObjectURL(blobObj);
    downloadLink.download = fileName;
    document.body.appendChild(downloadLink);
    downloadLink.click();
    document.body.removeChild(downloadLink);
}