通过ag-grid上的正确单元格格式导出到excel

时间:2017-08-21 07:32:30

标签: javascript excel ag-grid

当我使用ag-grid自己的exportDataAsExcel()将表格导出为Excel时,生成的Excel包含日期为常规数据类型而不是日期

[excel pic]

我用过这个:

exportDataAsExcel({
   processCellCallback: ({col, val}) => {( /*date value formatting here*/ )}
})

使用正确的日期格式Date格式化string(DD/MM/YYYY),但我无法将excel正确识别为日期,而不是的常规

这可以通过其网站上的excel导出示例重现:https://www.ag-grid.com/javascript-grid-excel/?framework=all#gsc.tab=0

3 个答案:

答案 0 :(得分:0)

你需要做三件事:

  1. 实例化Ag-Grid时,需要添加

    var excelStyles = [
        {
            id: "ExcelDateTime",
            dataType: "dateTime",
            numberFormat: { format: "yyyy-mm-dd hh:mm:ss;;;" }
        },
        {
            id: "ExcelDate",
            dataType: "dateTime",
            numberFormat: { format: "yyyy-mm-dd;;;" }
        }
    ];
    ...
    <AgGridReact
        ... //such as   rowData={rowData}
        excelStyles={excelStyles}
        ...
    />;
    
  2. 对于日期列:

    colDef.cellClass = "ExcelDateTime";
    

    colDef.cellClass = "ExcelDate";
    

    视情况而定,

  3. processCellCallback
  4. ,将日期格式设置为ISO日期:"yyyy-mm-ddTHH:MM:ss"

答案 1 :(得分:0)

我也使用此代码在excell中应用了值格式化程序:

this.gridOptions.api.exportDataAsExcel({
  processCellCallback: (params) => {
    if (params.column.getColDef().valueFormatter) {
      return params.column.getColDef().valueFormatter(params as any);
    }
    return params.value;
  },
});

答案 2 :(得分:0)

假设您控制着服务器端应用程序,我发现对于任何非平凡的导出/格式化,从服务器端进行导出都比较容易。

通过在服务器上进行操作,您可以完全控制数据和Excel文件的生成,而不必依赖于Ag-Grid的实现限制。