报表设计 复杂报表的使用

时间:2024-03-05 15:27:09

功能介绍

2019版报表中心集中于解决“数据出口(输出)”的问题,提供数据统计、汇总、分析、打印、输出、预警等一体化、通用解决方案。报表中心数据可来自于OA标准模块、流程中心、应用中心所产生的数据,也可来自于MySQL、SQL Server、Oracle等类型第三方开发的业务系统数据。报表中心包含四种制作报表的方法,分别是明细表、统计表、图表以及复杂报表,其中:

  • 明细表适用于以多级表头形式罗列明细清单的报表应用场景,例如各类人员花名册、采购清单等,如下图所示:

  • 统计表适用于从横、纵两个方向组合多个维度(角度)统计数据的应用场景,例如人员统计表、销售统计表,如下图所示:

  • 图表适用于以图表形式展示统计数据的应用场景,目前支持柱状图、栈柱状图、条形图、栈条形图、曲线图、面积图、栈面积图、饼图、散点图、气泡图、雷达图、仪表盘、地图、混合图、甘特图等15种图表类型,如下图所示:

  • 复杂报表适用于用户根据管理需求*绘制报表格式和数据展示形式的应用场景。

本手册重点介绍复杂报表定义方法,其他类型报表定义请参考《通达OA2019版报表中心使用手册》。

快速入门

复杂报表包括设计报表和使用报表两部分组成,设计报表又包括准备数据集和制作报表两部分。复杂报表操作步骤如下图所示:

设计报表

现以设计人员分析表为例,描述复杂报表的设计过程。人员分析表将按部门、分性别统计各个角色人员数量,有小计和合计,如下图所示:

准备数据集


依次点击 “报表中心” 》 “数据源管理”,进入数据源管理界面,如下图所示:

点击数据源“TD_OA”,进入该数据源数据集管理界面,如下图所示:

点击上图中的“新建数据集”,然后点中“SQL语句”,进入以SQL语句定义数据集界面,如下图所示:

在上述SQL语句编辑框中输入本次分析需要用到的SQL语句:

select UID as 人员UID,USER_ID as 登录名,USER_NAME as 真实姓名,if(SEX=0,\'男\',\'女\') as 性别,USER_PRIV_NAME as 角色,(select DEPT_NAME from department

where DEPT_ID=user.DEPT_ID) as 所属部门 from user where DEPT_ID>0 order by DEPT_ID,SEX,USER_PRIV

数据集名称指定为“人员情况”,然后点击“保存”完成数据集定义。在定义数据集过程中,可以通过点击“预览”实时查看数据情况。

定义报表

依次点击“报表中心”》“报表管理”,进入报表管理界面,如下图所示:

选择分类“特性展示”,然后点击“新建报表”,系统弹出报表类型选择对话框,如下图所示:

点选“复杂报表”,进入复杂报表设计器界面,该设计器采取类EXCEL方式设计,操作方式亦与EXCEL类似,如下图所示:

工具栏包含的功能如下图:

设计表样

设计表样有两种方法,第一种是在复杂报表设计器里绘制,其操作方式与操作EXCEL类似;第二种方法是通过点击“导入表样”按钮导入已有的EXCEL文件。导入本章开头里所描述的“人员情况分析表”表样,如下图所示:

友情提示:复杂报表设计器兼容xls格式的EXCEL文件,但还不兼容xlsx格式的EXCEL文件。如果需要导入xlsx格式的EXCEL文件,请先转成xls格式。

定义数据列

从字段选择区中,选择数据集“人员情况”,然后把字段“角色”拖拽到单元格“D2”中,如下图所示:

数据列用蓝字英文中括号字段名称表示,如上图中的[角色]。字段放置好之后,接着我们来定义数据其他属性。选中单元格“D2”,然后点击工具栏上的“数据设置”,系统弹出数据设置对话框,如下图所示:

数据设置对话框包含基本、筛选、其他、单位换算三个页签,每个页签包含若干设置项。

先切换到基本页签(默认打开),这个页签包含数据集、字段以及分组、列表、汇总、无动作等数据处理方式。这里数据集为:“人员情况”,字段为:“角色”。数据处理方式解释如下:

  • 分组:把提取过来的数据进行分组显示,分普通分组、相邻分组以及自定义分组。普通分组指在整列范围之内进行相同值合并分组,类似于数据库group by操作;相邻分组仅相邻数据进行相同值合并分组;自定义分组可以在原始数据基础上进行二次加工,然后再进行普通分组。关于如何定义自定义分组,请参考后面章节。

  • 列表:把提取过来的数据依次罗列展示,不做任何加工处理。

  • 汇总:把原始数据进行汇总计算后再显示,汇总方式包括求和、求平均、最大值、最小值、求个数五种。

  • 无动作:不做任何事情,类似于未定义。

这里按默认设置,即普通分组。

切换至筛选页签,如下图所示:

这里可以定义数据筛选条件表达式以及是否“继承父格条件”选项。这里要提取所有人信息,所以筛选条件表达式不定义,保持空白。

在其他页签可以定义提取数据范围以及排序规则;单位换算页签可以定义数据单位换算规则。这里均保持默认设置即可。

接着定义【角色】数据扩展方式,点击工具栏“扩展设置”,如下图所示:

数据扩展方式包括纵向扩展(按行向下)、横向扩展(按列向右)、不扩展三种,这里指定为“横向扩展(按列向右)”。

最后定义【角色】父子格,点击工具栏上的“父子格”,如下图所示:

父子格包含“左父格”和“右父格”两种。每种父子格有三种设置,分别是无、默认以及自定义:

  • 无:无父子格关系。

  • 默认:位于单元格左边的最靠近且纵向扩展的单元格默认为该单元格的左父格;与此类似,位于单元格上方的最靠近且横向扩展的单元格默认为该单元格的上父格。

  • 自定义:指定具体单元格作为父格。能充当父格的单元格必须是定义了数据列且设置为纵向或横向扩展。

这里父子格按默认设置即可。关于父子格将在后面章节详细说明。

到此为止,单元格“D2”数据列设置完成,返回到设计器并把光标移到单元格“D2”上可以看到数据列定义信息,如下图所示:

接着设置单元格“B3”数据列,设置结果如下图所示:

单元格“C3”数据列设置结果如下图所示:

单元格“D3”是要统计同时满足“部门”-“性别”-“角色”这三个维度组合条件的人数,因此采取“求个数”汇总方式且不扩展,设置结果如下图所示:

单元格“E3”数据列设置结果如下图所示:

单元格“D4”是对部门维度一个小计,即统计满足“部门”-“角色”两个维度条件(不分性别)的人数,因此“部门”所在的单元格“B3”是左父格,“角色”所在的单元格“D2”是上父格。由于“部门”所在的单元格“B3”不在“D4”单元格的左边,因此左父格需要设置为“自定义”方式手动指定为左父格为“B3”,而上父格按默认设置即可。“D4”数据列设置结果如下图所示:

单元格“E4”数据列设置结果如下图所示:

单元格“D5”数据列设置结果如下图所示:

单元格“E5“数据列设置结果如下图所示:

至此,该报表主体已经定义完成。最后,在操作栏中输入报表名称为“人员情况分析表”,选择报表分类为“特性展示”,然后点击“保存”完成设计报表工作,如下图所示:

关闭报表设计器界面,返回到报表管理界面,可以看到刚才新建的报表,如下图所示:

使用报表

在使用报表之前,先分配好权限,点击上图中的权限设置图标,分配权限如下图所示:

依次点击“报表中心”》“我的报表”,从左边报表分类树里,找到要访问的报表并点击即可,如下图所示:

父子格

父子格概念

复杂报表定义的基本单元是单元格,单元格之间本身是没有关系的,为了建立起单元格之间的关系从而引入了“父子格”概念。父子格分左父格和上父格两种,父子格在子格一方设置,设置了父子格的单元格之间就构成了父子格关系。能作为父格的单元格需要具备以下条件:

  • 设置了数据列。

  • 设置了扩展方式,且扩展方式必须是横向扩展或纵向扩展之一。

父子格可选设置有以下三种:

  • 无:即该单元格无父格。

  • 默认:默认的左父格取位于单元格左边同一行的或者是合并的单元格能够覆盖该行的、最靠近且具备父格条件的单元格;默认的上父格取位于单元格上方同一列或者是合并的单元格能够覆盖该列的、最靠近且具备父格条件的单元格。注意:按行向下扩展的单元格才有默认左父格,按列向右扩展的单元格没有默认左父格;同理,按列向右扩展的单元格才有默认上父格,按行向下扩展的单元格没有默认上父格。

  • 自定义:手动指定父格。

父子格关系

父子格关系包含以下两层含义:

  • 扩展跟随关系:子格跟随父格的扩展而扩展。

  • 条件传递关系:子格的数据需要满足父格条件,即父格限制了子格能够取到的数据范围。

例子

为了进一步阐明父子格关系,现举例说明如下:

默认左父格关系

单元格“A1”、“B1”的左父格及上父格都按默认设置,那么“A1”没有左父格,也没有上父格;“B1”左父格是“A1”,没有上父格,运行该报表结果如下:

从运行结果可以看出:“B1”跟随“A1”的扩展而扩展,且继承了“A1”的条件。

自定义左父格关系

单元格“B2”的左父格自定义为单元格“A1”,该报表运行结果如下:

从运行结果可以看出:“B2”跟随“A1”的扩展而扩展,且继承了“A1”的条件。

无左父格关系

定义单元格“B2”左父格为无或者默认(由于“A1”和“B2”不在同一行,因此默认设置时“B2”实际上也是没有左父格的),运行报表后的结果如下:

从运行结果可以看出:“A1”和“B2”各自分别扩展;“B2”没有跟随“A1”的扩展而扩展,也没有继承“A1”的条件。

默认上父格关系

单元格“A1”、“A2”父子格均按默认设置,即“A2”的上父格为“A1”。运行该报表结果如下:

从运行结果可以看出:“A2”跟随“A1”的扩展而扩展,且继承了“A1”的条件。

自定义上父格关系

通过自定义单元格“B2”的上父格为单元格“A1”,使单元格“A1”和单元格“B2”之间构成上父子格关系。运行该报表结果如下:

从运行结果可以看出:“B2”跟随“A1”的扩展而扩展,且继承了“A1”的条件。

无上父格关系

根据设置单元格“B2”无上父格,即“A1”和“B2”没有形成上父子格关系。运行该报表结果如下:

从运行结果可以看出:“A1”和“B2”各自分别扩展;“B2”没有跟随“A1”的扩展而扩展,也没有继承“A1”的条件。

混合父格

其中,单元格“A1”纵向(按行向下)扩展,父子格默认设置;单元格“B1”横向(按列向右)扩展,左父格自定义为“A1”,父子格默认设置;单元格“C1”按行向下扩展,父子格默认设置。运行该报表结果如下:

自定义分组

复杂报表除了支持常规分组之外,还支持自定义分组。在定义数据列时把数据分组设置为“自定义”,然后可以通过点击“添加分组”来创建自定义分组。我们可以以角色号作为分组标准分成三组,分别为:角色小于等于10为一组,角色号介于10至20之间为二组,角色大于20为三组,如下图所示:

条件格式

复杂报表支持条件格式功能,即可通过设置条件来格式化单元格格式。设置的方法是:把光标移到数据列,然后点击工具栏的“条件格式”功能,即可设置条件格式,如下图所示:

条件格式由条件和格式组成,一个数据列可以设置多个条件格式,例如某报表销售额条件格式设置如下图: