子报表
所谓的子报表就是将一张报表嵌入到另外一张报表中的报表。从2.0.2版本开始,BaskReport支持子报表。
制作子报表
子报表就是一张普通的报表,在BaskReport当中任何报表都可以作为子报表使用,只是在将其作为子报表前需要将其先发布,发布完成之后,这个报表就可以在其它报表中引用作为子报表使用了。
插入子报表
打开报表设计器,选中需要插入子报表的单元格,点击工具栏上的子报表图标,在弹出窗口中选择要插入的报表文件即可。
配置子报表属性
插入子报表后,可以选中子报表所在单元格,这样在右侧属性面板中就可以配置它的相关属性。
子报表的属性主要有两个,分别是自动适应所在单元格宽度和自动适应所在单元格高度。
自动适应所在单元格宽度
此属性默认不勾选,计算输出时直接使用子报表的宽度,如果宽度超出单元格宽度,则超出部分不显示;勾选后在计算输出时,当前单元格中包含的子报表的宽度将根据当前单元格所占宽度进行缩放,以使得子报表的宽度与所在单元格的宽度保持一致。
自动适应所在单元格高度
此属性默认不勾选,计算输出时直接使用子报表的高度,如果高度超出单元格高度,则超出部分不显示;勾选后在计算输出时,当前单元格中包含的子报表的高度将根据当前单元格所占高度进行缩放,以使得子报表的高度与所在单元格的高度保持一致。
这两个属性下面,提供了三个按钮链接,通过它们可以重新选择子报表文件、打开当前子报表文件,或者加载当前子报表中配置的参数。
配置子报表参数
如果子报表模版中通过配置了参数,那么在子报表属性面板通过读取报表参数链接就可以加载当前子报表中定义的参数,这样我们就可以在当前子报表所在的报表中为这个子报表传递需要使用的参数,如下图所示:
上面的截图中,名为subreport的子报表中定义了deptId和degree两个参数,点击读取报表参数链接就可以将这两个参数加载到属性面板,这里我们定义了deptId参数的值为表达式A1,degree参数的值为B1,这样在运行时引擎就会根据当前子报表所在单元格的位置计算出A1和B1单元格的值,然后写到deptId和degree参数中传递给目标子报表计算使用。
使用子报表的注意事项
含有子报表的报表的在预览和导出需要注意以下几项:
- 子报表无法分页,如果某个单元格中包含子报表,那么这个子报表所有数据都将在这个单元格定义的高度和宽度范围内展示,无法实现分页功能。
- 子报表支持打印,导出PDF、Word文件;但不支持导出Excel和CSV文件。
- 子报表中不支持浮动元素,比如子报表中定义的浮动文本、图片、图表等都不会显示。
- 子报表中不支持填报,如果在子报表中定义了填报功能,那么这些功能也不会生效。
了解上述内容后,我们就知道,子报表可以用来表现一些无法用单元格迭代实现的异型结构的报表,同时这些数据又可以在一页中显示完成的,对于这种类型的报表就适合用子报表去实现。