【问题标题】:Ag-grid angular format data before exporting导出前的 Ag-grid 角度格式数据
【发布时间】:2019-06-06 07:59:22
【问题描述】:

我有要导出的网格:

initializeColumnDefs() {
    this.columnDefs = [];
    this.columnDefs.push({
        headerName: 'time,
        field: 'completedTimestamp',
        cellRenderer: (params: any) => {
          if (params.data.isMomentarily)
            return '';
          return DatagridComponent.DefaultDatetimeCellRenderer(params);
        },
        comparator: (valueA: number, valueB: number) => {
          return DatagridComponent.DefaultDatetimeCellComparator(valueA, valueB);
        }
      },
      {
        headerName: 'people',
        field: 'people',
        cellRenderer: (params: any) => {
          if (!params || !params.value || params.value.length <= 0)
            return '';
          let titles = '';
          params.value.forEach(element => {
            if (element.name) {
              titles += element.name + ',';
            }
          });
          return titles.substring(0, titles.length - 1);
        }
      }
    );
  }

上面有两列的示例:一列带有时间戳,一列带有对象。

我用来导出为 csv 的 export() 方法:

  export() {
let header = this.columnDefs.map(columnDef => {
  let id = columnDef.field || columnDef.colId || columnDef.value;
  let headerName = columnDef.headerName;
    return headerName;
  });
  let a: any;
  let params: any = {
    fileName: 'export.csv',
    columnSeparator: ';',
    skipHeader: true,
    columnKeys: this.columnDefs.map(c => c.field || c.colId).filter(c => !!c)
  };
  params.customHeader = header.join(params.columnSeparator) + '\n';
  this.grid.api.exportDataAsCsv(params);
}

但是,在导出之前我很难找到值的格式,因为在这里我只得到标题和字段而没有值? 当我将网格导出到 csv 而不是 datetime 时,我得到例如

这是时间戳,对于我的对象,我得到

而不是Tom, Bob, Ben

有谁知道在导出之前如何格式化这些值?

【问题讨论】:

    标签: javascript angular ag-grid ag-grid-angular


    【解决方案1】:

    在您的export() 函数中,您必须添加一个参数processCellCallback

    类似这样的:

    export() {
        let header = this.columnDefs.map(columnDef => {
          let id = columnDef.field || columnDef.colId || columnDef.value;
          let headerName = columnDef.headerName;
            return headerName;
          });
          let a: any;
          let params: any = {
            fileName: 'export.csv',
            columnSeparator: ';',
            skipHeader: true,
            columnKeys: this.columnDefs.map(c => c.field || c.colId).filter(c => !!c)
          };
          params.customHeader = header.join(params.columnSeparator) + '\n';
          params.processCellCallback = function(cellParams) {
                 if(cellParams && cellParams.column.colId === 'yourTimestampfield') {
                         return this.formatter; //apply your timestamp formatter      
                 } else if(cellParams && cellParams.column.colId === 'yourObjectfield') {
                         return this.formatter; //apply your object formatter  
                 } else 
                        return cellParams.value // no formatting
              }
          this.grid.api.exportDataAsCsv(params);
        }
    

    在示例和文档中阅读更多内容here

    【讨论】:

      猜你喜欢
      • 2020-11-17
      • 2018-08-21
      • 2020-02-04
      • 1970-01-01
      • 1970-01-01
      • 2017-12-10
      • 2020-06-14
      • 2019-05-31
      • 2018-09-19
      相关资源
      最近更新 更多