Ag 网格 exportDataAsExcel 运行导出到 xml 而不是 xlsx
Posted
技术标签:
【中文标题】Ag 网格 exportDataAsExcel 运行导出到 xml 而不是 xlsx【英文标题】:Ag grid exportDataAsExcel run export to xml instead xlsx 【发布时间】:2020-12-08 08:26:28 【问题描述】:我添加上下文菜单并将导出重新分配给 csv 和 Excel - 我需要为某些列导出使用 valueFormatter。
导出工作正常,但是在我运行导出到 xml,然后运行导出到 Excel 之后 - 我得到了 xml 文件。
它只发生在这里 - 因为我使用 getContextMenuItems。其他表使用标准上下文菜单工作正常。
菜单:
getContextMenuItems = (() =>
const self = this;
return (param) =>
const menu = [
'copy',
'copyWithHeaders',
'paste',
'separator',
name: 'Export',
subMenu: [
name: 'csvExport',
action: () =>
self.gridApi.exportDataAsCsv(
processCellCallback: (params) =>
if (params.column.getColDef().valueFormatter)
const valueFormatterParams: ValueFormatterParams =
...params,
data: params.node.data,
// tslint:disable-next-line:no-non-null-assertion
node: params.node!,
colDef: params.column.getColDef()
;
return params.column.getColDef().valueFormatter(valueFormatterParams);
return params.value;
,
);
,
name: 'excelExport',
action: () =>
self.gridApi.exportDataAsExcel(
processCellCallback: (params) =>
if (params.column.getColDef().valueFormatter)
const valueFormatterParams: ValueFormatterParams =
...params,
data: params.node.data,
// tslint:disable-next-line:no-non-null-assertion
node: params.node!,
colDef: params.column.getColDef()
;
return params.column.getColDef().valueFormatter(valueFormatterParams);
return params.value;
,
);
,
'excelXmlExport'
]
];
return menu;
;
)();
例如:https://plnkr.co/edit/ysaS5IJzOwvVacRb
-
运行导出到 Excel(格式化)- 获取 xlsx
运行导出到 xml - 获取 xml
运行导出到 Excel(格式化) - 获取 xml 而不是 xlsx
【问题讨论】:
【参考方案1】:在您自定义的 Excel 导出中,您必须定义 exportMode
属性。显式定义此属性的原因是 AG Grid 使用相同的方法导出两种类型,exportMode
在这里起着至关重要的作用。如果未定义导出模式,则 AG Grid 使用this.getExportMode()
,它给出最后使用的exportMode
(在您的情况下为 XML)。
这就是 AG Grid 实现导出功能的方式。
case 'excelExport':
return
name: localeTextFunc('excelExport', 'Excel Export (.xlsx)‎'),
action: function () return _this.gridApi.exportDataAsExcel(
exportMode: 'xlsx'
);
;
case 'excelXmlExport':
return
name: localeTextFunc('excelXmlExport', 'Excel Export (.xml)‎'),
action: function () return _this.gridApi.exportDataAsExcel(
exportMode: 'xml'
);
;
将您的代码更改为此,它应该可以工作,
self.gridApi.exportDataAsExcel(
exportMode: 'xlsx',
processCellCallback: (params) =>
if (params.column.getColDef().valueFormatter)
const valueFormatterParams: ValueFormatterParams =
...params,
data: params.node.data,
// tslint:disable-next-line:no-non-null-assertion
node: params.node!,
colDef: params.column.getColDef()
;
return params.column.getColDef().valueFormatter(valueFormatterParams);
return params.value;
,
);
【讨论】:
以上是关于Ag 网格 exportDataAsExcel 运行导出到 xml 而不是 xlsx的主要内容,如果未能解决你的问题,请参考以下文章
在 ag-grid 上使用正确的单元格格式导出到 excel
如何将事件侦听器添加到 ag 网格单元格内的元素(使用 js 或 jquery,不是 angular,不是 reactjs,不是 vue)