在 ag-grid 上使用正确的单元格格式导出到 excel

Alb*_*uez 2 javascript excel ag-grid

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

[excel图片]

我用过这个:

exportDataAsExcel({
   processCellCallback: ({col, val}) => {( /*date value formatting here*/ )}
})
Run Code Online (Sandbox Code Playgroud)

格式化两个Datestring适当日期格式(DD/MM/YYYY),但我不能让Excel的正确识别这些细胞的日期,而不是一般

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

Lie*_*ero 8

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

this.gridOptions.api.exportDataAsExcel({
  processCellCallback: (params) => {
    const colDef = params.column.getColDef()
    // try to reuse valueFormatter from the colDef
    if (colDef.valueFormatter) {
      const valueFormatterParams: ValueFormatterParams = {
        ...params,
        data: params.node.data,
        node: params.node!,
        colDef: params.column.getColDef()
      };
      return colDef.valueFormatter(valueFormatterParams);
    }
    return params.value;
  },
});
Run Code Online (Sandbox Code Playgroud)


Dav*_*osh 6

你需要做三件事:

  1. 实例化Ag-Grid时,需要添加(感谢其他用户在其他地方的回答

     let 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}
         ...
     />;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 对于日期列:

     colDef.cellClass = "ExcelDateTime";
    
    Run Code Online (Sandbox Code Playgroud)

    或者

     colDef.cellClass = "ExcelDate";
    
    Run Code Online (Sandbox Code Playgroud)

    视情况而定,以及

  3. 在您的 中processCellCallback,将日期格式化为 ISO 日期:"yyyy-mm-ddTHH:MM:ss"