【问题标题】:Ag grid exportDataAsExcel run export to xml instead xlsxAg 网格 exportDataAsExcel 运行导出到 xml 而不是 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

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

【问题讨论】:

    标签: angular ag-grid export-to-excel export-to-xml


    【解决方案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;
              },
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-28
      • 2019-08-16
      • 2022-07-06
      • 2020-12-06
      • 2020-07-29
      • 2023-03-25
      相关资源
      最近更新 更多