Ag grid exportDataAsExcel运行导出到xml而不是xlsx

问题描述

我添加了上下文菜单,然后将导出重新分配给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,'excelXmlExport'
      ]
    }
  ];
  return menu;
};
})();

例如:https://plnkr.co/edit/ysaS5IJzOwvVacRb

  1. 运行导出到Excel(格式)-获取xlsx
  2. 运行导出到xml-获取xml
  3. 运行导出到Excel(格式化)-获取xml而不是xlsx

解决方法

在自定义的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;
          },});

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...