如何在导出报表时动态添加分组列原创
金蝶云社区-陈来珍
陈来珍
3人赞赏了该文章 3042次浏览 未经作者许可,禁止转载编辑于2022年04月14日 17:44:13

关键词:报表、导出、分组

一、需求背景

       报表查询了一个采购申请单的一些数据,在报表查询的时候没有显示分组,但是导出时需要在导出的excel中添加分组列,把申请数量和计量单位放在一个分组中

1.png

二、思路与方案

报表导出时,触发报表导出事件preProcessExportData,在该事件中把要添加到分组的列移除,并添加到指定分组列的子列中

三、实现过程

  1. 配置查询数据源

2.png

2.添加报表插件,继承AbstractReportFormPlugin,在报表导出之前事件中添加添加动态分组列

3.png

// 报表导出之前,数据加工
    @Override
    public void preProcessExportData(List<AbstractReportColumn> exportColumns, DynamicObjectCollection data,
           NumberFormatProvider numberFormatProvider) {
       //创建分组列
       ReportColumnGroup reportColumnGroup = new ReportColumnGroup();
       //标题
       reportColumnGroup.setCaption(new LocaleString("动态分组"));
       //字段名
       reportColumnGroup.setFieldKey("exportGroup");
       Iterator<AbstractReportColumn> iterator = exportColumns.iterator();
       while (iterator.hasNext()) {
           AbstractReportColumn exportColumn = (AbstractReportColumn) iterator.next();
           LocaleString caption = exportColumn.getCaption();
           String localeValue = caption.getLocaleValue();
           if (localeValue.equals("申请数量")||localeValue.equals("计量单位")) {
              //把指定的列添加到一个分组下面
              reportColumnGroup.getChildren().add(exportColumn);
              //List遍历删除必须用迭代器
              iterator.remove();
           }
       }
       //添加导出的分组列
       exportColumns.add(reportColumnGroup);
       super.preProcessExportData(exportColumns, data, numberFormatProvider);
    }

四、实现效果

点击引出按钮导出excel表数据,可以看到,申请数量和计量单位添加到了动态分组列的下面

4.png

五、开发环境版本

COSMICV4.0.010.0

六、参考资料

【开发平台】指导手册

学习成长中心

赞 3