报表结构
这章我们将分析报表的构成,来观察一下它由那几部分构成,当用数据打印时这几部分是如何运转的。
Bands
一个报表依靠“type”页来定义说明。它被分成不同水平的一份被叫做bands。当报表加入数据去打印时,这些部分被印刷很多次依照他们自身的属性(依照报表创建者设计的规则)。举个例子,page header 被重复的打印在每页的开始部分,这样的话,每个band都会重复的打印每一单一的记录。
这个 “type” 页被分成9个预先确定的bands作为新组被加进去。事实上,iReport控制每一个头条(Group header)和一个摘要条(Group footer)为每一个组。
图4.1
一个带总是和页的宽度一样(左右的空白除外)然而它的高度,即使已经被设计好,但可能还会依据被包含在内的元素的实际来打印;它能够自由的延长靠近页底。这种特色的出现在bands包含一个subreports或者text field时纵向的内容。通常情况下,bands的高度被用户指定一个“minimal height”。不是所有的bands能依照内容被这个外力改变,特别是:Column Footer,Page Footer 和 Last Page Footer.所有的band高度的总和(除了background)总是小于或等于页的top和bottome之间的最小高度。
Title
这是首先看到的band。它被创建仅仅一次,可能被打印在每一分开的页。耍点小聪明,你能利用这个模拟一个无效的subreports(随后我将看看如何做)。关于尺度的确认,它是不可能躲过去的,在报表页的高度设计期间。As regards the admitted dimensions, it is not possible to exceed,
during design time, the report page height (包含top和bottome标记之间)。如果title被打印在几张单独的页面上,这个band的高度不用被包括在整个band的高度之内的,一般低与page的高度。
Page header
这个band允许你设计一个page的header。它的高度在设计阶段被定义,通常不会改变在创建报表的过程中(除非有垂直插入相当大的成分,例如这个textfields包含很长的文本和subreports)。页面的header出现在整个打印页的相同位置在设计阶段期间。Title和Summary bands不包括page header 在打印一个单独的页时。
Column header
这个band在每一个详细的列开始时被打印。这column的概念一会儿再结实。通常的,包含标签的tabular报表的列的名字被插入在这里。
Group header
一个报表能容纳零个到多个group bands,它允许收藏详细的记录在不动groups。有group header ,自然要有group footer(他们能能独立的展现和取消)。不同的属性被联合在一个group。他们确定他们的行为功过查看 graphic point。它是可能的影响一个新的页的group header或者一个newcolumn,打印这个band在整个页的下面,如果这个bands超出了一个单独的页(以一个组的级别作为一个page header)。它 是可能的去修改被请求的高度并打印它:如果它是超过其他的高度,这个group将被打印在一个新的page(特别要注意它的值由于太长,在打印时会无限的循环),等等。接下来我们将详细讨论groups。
Detail
Detail band 将每个通过datasources读到记录响应的传给打印机。很可能,大多数的元素都被放在这里。
Group footer
这个band表示一个group的结束。通常它包含的区域显示小计或者分开图解元素,作为一条线,等等。
Column footer
这个band的出现表示每一个column的结束。它的尺寸是不能被调整的(即使它包含一个相当大的元素,像subreports或者文本域)。
Page footer
这是页脚。它和page header同时出现在每页。同column footer一样,他是不足够大的。
Last Page footer
如果你想使最后一页的footer与其他的页的footers不一样,这时可能就要用到这个band。如果这个band的高度是0,他将被完全的忽视,其他确定结构的普通页也能适用在最后一页。它首次出现在JasperReports的0.6.2版本。
Summary
在其他的地方这个组名被叫做report footer。它允许你在report的最后插入你想要的任何内容关于总结等。
Background
Band第一次出现在JasperReport0.4.6版本时。它由于许多用户的坚持不懈的要求能够创建水印和similar effects而引入 (整个页面的结构). 它可以具有最大的高度以至于和页面高度一样。
报表属性:
现在我们已经看过报表的单个部分,我们将继续创建一个新的报表。按菜单上的这个 按钮选择New Document:打开一个窗口。在这里填写报表的属性(图4.2)。这个窗口可以随时打开通过view菜单的Report properties。
图4.2
报表的名字是第一个属性。这个名字是本地命名,它和源文件的名字是相互独立的,它仅仅被JasperReports library 调用(例如:命名一个报表编译后的java文件)。
页面的尺寸大概是报表最重要的属性。一系列报表的尺寸标准被提议。iReport 和 JasperReports使用的最小量度单位是像素。(像素大小是75点每英寸,每英寸的点数)。
然而,我们经常使用的报表的量度单位更为平常,像厘米,英寸或毫米。
表4.1列出了量度标准和像素大小。由于尺寸管理基于像素,所以当我们用不同的量度看同一数据会发生很大改动。
Page type |
Dimensions in pixel(像素) |
LETTER |
612 x 792 |
NOTE |
540 x 720 |
LEGAL |
612 x 1008 |
A0 |
2380 x 3368 |
A1 |
1684 x 2380 |
A2 |
1190 x 1684 |
A3 |
842 x 1190 |
A4 |
595 x 842 |
A5 |
421 x 595 |
A6 |
297 x 421 |
A7 |
210 x 297 |
A8 |
148 x 210 |
A9 |
105 x 148 |
A10 |
74 x 105 |
B0 |
2836 x 4008 |
B1 |
2004 x 2836 |
B2 |
1418 x 2004 |
B3 |
1002 x 1418 |
B4 |
709 x 1002 |
B5 |
501 x 709 |
ARCH_E |
2592 x 3456 |
ARCH_D |
1728 x 2592 |
ARCH_C |
1296 x 1728 |
ARCH_B |
864 x 1296 |
ARCH_A |
648 x 864 |
FLSA |
612 x 936 |
FLSE |
612 x 936 |
HALFLETTER |
396 x 612 |
_11X17 |
792 x 1224 |
LEDGER |
1224 x 792 |
表4.1
通过修改高度和宽度,你就可以创建任意大小的报表。报表页的定位有landscape和portrait选项,事实上这并没有太大的意义,因为报表页是由宽和高来刻画它的尺度的,并且每个单页都是相互独立。然而这个属性可以别用来确定报表的输出。
页面的空白尺寸依赖于Margin选项卡的四个输入值来确定。
列
像你看到的那样,一个报表页被几条平行线分开为几部分:bands。这个选项页是用来排版报表的,现在的这部分具有独立的数据(像title片段,或者page footers),和其他的片段一样被打印根据数据记录的不同从零开始(像group headers和detail)。这个选项页的最后一个属性值能分开垂直的列为了利用报表页中可利用的空间。
上下文中的column的概念很容易被”field”搞混。事实上,column和记录集是没有关系的,只和detail band有关系。意思就是说一条记录用十个fields和一个表的话,不需要十列。然而,这些元素可以用table实现恰当的放置。十列将导致一个很长的记录列(非常狭窄的横条)被打印。下面的例子将告诉你怎样设置值为一个简单的列报表在A4纸上。
图4.3
Columns的值是1,它的宽度和整个页面一样,除了空白。列之间的空间没有意义,所以它的值是0。
图4.4 图4.5
看4.5图,这个页的大部分没有被使用,如果使用大量的列,这个报表看起来会好看一些。图4.6展示了两列报表的尺寸大小。
图4.6
既然这样,在这个“columns“,我们输入2。iReport将自动的计算列的宽度依照页的空白和宽度。如果你想在两列之间插入空白,那就为”spacing”填写一个值。
像4.8图中看到的,这个页面的空白有被更好的利用。
滥用列的话可能将打印一个非常长列(像一个电话本一样)。总之,当detail band和连续的bands出现超过一列的宽度空白时你要记住使用列来减少宽度。所有的空白,列的宽度和每列之间的空白,加起来要小于页的宽度。如果不检验这种情形的话可能导致错误产生。
图4.7 图4.8
在图4.5和4.7中页面上有用区域设置报表的元素(像fields,images等等)。这部分是不可利用的,像空白和第一列余下的空白。The parts which are not utilizable, such as margins and columns following the first one (which have to be considered like the continuation of this one) are highlighted in grey.