Alb*_*uez 2 javascript excel ag-grid
当我使用 ag-grid 自己exportDataAsExcel()的表格将表格导出到 excel 时,生成的 excel 包含日期作为General数据类型而不是Date。
[
]
我用过这个:
exportDataAsExcel({
processCellCallback: ({col, val}) => {( /*date value formatting here*/ )}
})
Run Code Online (Sandbox Code Playgroud)
格式化两个Date,string适当日期格式(DD/MM/YYYY),但我不能让Excel的正确识别这些细胞的日期,而不是一般
这可以通过其网站上的 excel 导出示例重现:https : //www.ag-grid.com/javascript-grid-excel/?framework=all#gsc.tab=0
我也使用此代码在 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)
你需要做三件事:
实例化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)
对于日期列:
colDef.cellClass = "ExcelDateTime";
Run Code Online (Sandbox Code Playgroud)
或者
colDef.cellClass = "ExcelDate";
Run Code Online (Sandbox Code Playgroud)
视情况而定,以及
在您的 中processCellCallback,将日期格式化为 ISO 日期:"yyyy-mm-ddTHH:MM:ss"