iReport 报表元素大全
这章我们将解释报表的主要对象和他们的特性。
这里的”element”就是一些图形对象,像一些文本或长方形。不同于字处理机那样,在iReport那段的概念中,表和分页符将不存在;任何东西被创建借助于elements,包括文字,当他们排成一行时就创建了表格,等等。这些相近的被大多数报表工具所采用。
“basic”元素中有7个由JasperReports提供:
- Line
- Rectangle(长方形)
- Ellipse
- Static text
- Text field (or simply Field)
- Image
- Subreport
通过这些元素的结合,能够创建任何一种报表。
除了这些之外,iReport还提供了两种特殊的基于象元的元素:chart(图表)和barcode(条形码)。
每种元素都有一些普通的属性,像高,宽,位置,band应该被放的位置和其他特殊的属性(例如:字体,在长方形的情况时,border的厚度)。它可能分为两个大的类别的组:图形元素(像:line,rectangle,ellipse,image)和文本区域(labels和textfield)。
子报表代表一种独立的元素,因为他使用起来很复杂,我也将接触他们在一个单独的章节。
这些元素被插入bands。特别是每一元素都不能合放在一个band中。如果这些元素不能被完整包含在band中,报表编译器将返回一个错误信息,关于元素的错误的姿态;不管怎么样,报表都将被编译,甚至是更糟糕的情况,但”out of band”将不能被打印出来。
选择并插入元素到报表中:
为了添加元素到报表中,选择(图5.1)工具条上目前显示的工具
表格5.1
取向工具被用来对这些元素做更重要操作和一些常用的工具。当你想插入一个元素时,点鼠标左键在你想插入元素的地方向下拖拽鼠标来画一个合适的长方形。当松开鼠标时,一个新的元素将被自动的选择和创建。这个新的元素也将在iReport面板的右边的元素浏览(elements browser)中出现。
图5.1
双击鼠标右键或者选择菜单View→Element Properties, it 能够打开元素的属性窗口(图5.2)。
图5.2
这个窗口是有组织的几个选项卡。This window is organized in severl tabs. The “Common” tab 选项卡包含了每一种元素的通用的属性,其他的选项卡是每一种元素单个的属性。
能够选种多个元素在同一时间功过取选工具和画一个长方形将你要选择的元素包含在内。被选择的区域会显示一个粉红色的长方形框。
或者,选中一个或多个元素在同一时间,通过按“Shift”键用鼠标点中你已经插入的元素。
选种一个元素时将在该元素长方形的每个角显示兰色的小方框(图5.4),当选择多个元素时该元素长方形的每个角显示灰色的小方框。(图5.5)
图5.3 图5.4 图5.5
多重选择中的第一个元素作为主要的选择。.
为了能够调整元素的大小,可以移动鼠标的光标到长方形的边上或拐角处:点并拖拽来安排你想要的尺寸。为了更小心的调整,可以在元素的属性框的特别选项卡中填写合适的尺寸。如果同时选择了多个元素,一个元素的调整会调整所有的元素。
此外,你也可以用放大报表,通过使用工具条上的zoom工具(图5.6):
图5.6
你可以在选择框中选择百分比(图5.6)或者直接写一个你想要的值(明确一下,字符后使用’%’号)。
警告:在调整元素期间,必须注意使用整数(像1x,2x,3x,等)来避免近似值的错误!
布置和元素顺序
一个元素可以通过鼠标来移动:通过点这个元素,选中后可以进行拖拽到任意你想要的位置。为了能够最大化的提高移动的准确度,你可以用方向键进行移动,一次移动一个像素。同样的操作,你可以完成通过按shift键,将引起这个元素十个像素的移动。
.即使移动时有一点阻碍,也可以破坏掉这个元素的阻碍,可以选择菜单Edit→Disable elements mouse move.
菜单可以View→Show grid查看不同元素的位置,通过格栅作为参考。也可以插入一个动作,通过菜单Edit→Snap去对起格线。
图5.7
随着越多元素组织进报表,可能就要用到几个工具,这些工具可以从这两个菜单format和contextual中找到,可以按右键查看选择插入元素。更多的官能性需要选择更多的元素。在这种情况下,基本元素被作为做作的参考。表5.2是对官能性的总结。
| | |
Align left(左对齐) | 校正基本元素的左边 | √ |
Align right(右对齐) | 校正基本元素的右边 | √ |
Align top | 校正基本元素的上边(或者上部分) | √ |
Align bottom | 校正基本元素的底边 | √ |
Align vertical axis | 校正被选中元素的水平中心 | √ |
Align horizontal axis | 校正被选中元素的垂直中心 | √ |
Align to band top | 设置最高值为0 |
|
Align to band bottom | 尽可能的放置元素在属于他的底边的band. |
|
Same width | 设置被选择元素的宽度为一样 | √ |
Same width (max) | 设置被选择元素的宽度都为最大宽度 | √ |
Same width (min) | 设置被选择元素的宽度的最窄值 | √ |
Same height | 设置被选择的元素的高度等于基本元素的高度 | √ |
Same height (max) | 设置被选元素的高度等于最高元素的高度 | √ |
Same height (min) | 设置被选元素的高度等于最矮元素的高度 | √ |
Same size | 设置被选元素规格为基本元素 | √ |
Center horizontally(水平居中) (band based) | 设置被选元素水平居中 |
|
Center vertically(垂直居中) (band based) | 设置被选元素垂直置中 |
|
Center in band | 字段中间 |
|
Center in background | 整体置中 |
|
Join sides left | 被选元素以靠最左边元素为基准,所有元素的左边相连 | √ |
Join sides right | 被选元素的以靠右边元素为基准,所有元素的右边相连 | √ |
HS →Make equal | 使被选元素之间保持一样的距离 | √ |
HS →Increase(增加) | 在所有元素中见插入5个像素的空白(向右移动) | √ |
HS →Decrease(减少) | 在所有元素中间插入5个像素的空白(向左移动) | √ |
HS →Remove | 删除水平方向的空白并向左移动元素 | √ |
表格5.2
元素能够被互搭;也就是通过使用格式功能Bring to front and Send to back使元素置前或置后。zorder被给通过整齐的元素插入到报表。这个排列能被看到在元素树,这些元素被查看在每一个band从最矮到最高的。
我们说过,一个元素已经被连接到所属的band。如果这个元素的一部分或全部超出band,它将会出现一个红色的高亮框架显示(仅仅为text元素),这个位置可能就是无效的。其他元素,这个错误位置被高亮显示在元素树或者被选择的元素上用一个红色的拐角。
图5.8
如果一个元素的部分遮掩了其他元素,这个拐角用绿色高亮显示;但如果一个元素的全部遮掩了其他元素,这个拐角用粉红色高亮显示。
图5.9
移动一个元素从一个band到另一个band,iReport可以自动改变所属的band。去指定不同的band,需要用属性窗口的第一个复选框(图5.9)。
如果两个或更多个元素被选择,那么属性窗口将只显示公共属性,如果这些属性值是不同的,将显示空值(使用的字段被显示空白)。具体的值为特殊属性,将适用于所有被选择的元素。
使用元素树管理元素:
元素树能够容易和精确地局部地选中报表元素。
图5.10
这里报表的外型是一个属性结构:主节是bands(使用一个文件夹表示),进到band里面是元素符号,名字和坐标能被看到,他们也被置于band中。
双击一个你选择的元素,将打开该对象的属性窗口。也可以通过鼠标右键属性菜单打开。再往后常用的功能就复制和粘贴,这儿有两个特殊的功能, move up and move down, 意思就是说可以修改一个元素在具体band中的z-border.
图5.11
如果选择了band的名字,可以右键属性进行对band 属性的操作。(图 5.11).
所有的band的特征将在第8章被解释。
基本属性:
所有的元素都有公共的属性在属性窗口“common”的选项卡 (图 5.2).主要关系到元素在页面上的位置:以下对不同属性的描写。
并列和同等规格的总是被确定为72个像素大小。
Band 指元素所属的band。所有的元素只属于一个band,一个band总联系着这个元素。元素的安放总是在band中。
Top 所属band的元素的上边到band顶部的距离
Left 从band左边到元素右上角的距离
Width 指元素的宽度s the element width;
Height 指元素的高;它实际上的值是根据打印时真实值的高度来确定
Foreground 指文本被打印的颜色和元素的线和拐角被画的颜色。
Transparent 这个选项表示元素为透明的,透明的元素的部分应该被背景色填充。
occupied by an object, if this is not visible; the element visibility is
determined by the value of the expression contained in the Print
When Expression attribute; thinking about the page as a grid where
the elements are put, the line which the element occupies, is that
表格5.3加亮元素的一条线;为了真正的删除这条线,所有的元素占有仅仅一部分线,有null值的地方 (没有被打印出来);
Print in first whole band 这个选项保证当元素值溢出时被打印在下一页或下一列;这个保证被使用当Print repeated values是不活跃时
Print when detail overflows 这个选项允许打印元素以页或列,如果band不能被打印当前的列或页
Print repeated values this 这个选项决定时候打印元素,当该元素的值与前一条记录值一样时
Position type 在band被改变的情况下确定顶部的坐标。三个可能的值是:
- FixRelativeToTop 预先定义位置类型;这个坐标从来不改变的。
- Float 元素进一步的向底边增加他们的高度,依据前一个元素的高度
- FixRelativeToBottom 元素维持其到底边的距离的常量值;被用做单独记录的分割线。
Print when group changes 所有的报表的组被显示在这个下拉框中;如果他们中的一个被选择,仅当表达式改变组的时候被选择的一个将被打印,此时一个新的坏的组被选择。
Key 它是元素的名字,只有一个意义(iReport自动提出),被程序用来在运行时修改需要修改的文件的属性;
Stretch type 这个属性用来定义详细打印期间元素的高度;可能值有以下几种::
- No stretch 预先改变类型利用元素的高度保持一直。
-RelativeToBandHeight 元素成比例的增加使band增加,用来模仿表格的垂线。
- RelativeToTallestObject 这个选项修改一个元素的高度从而改变离它最近的元素:它也被用做element group,这是一个元素组机制,但不能被iReport管理。
图形元素的画一个对象像一条线或一个长方形;他们通常不显示数据,但是他们却更多的被打印出来,从美学上看他们更有趣,通俗易懂。所有种的元素分享这个“Graphics element”选项卡在这个属性窗口:
Fill 用来修改填充背景;仅仅被允许使用fill值,完全的填充
线
在JasperReports中线被定义为长方形,有对角线的长方形。
Line direction it 被表示成两条对角线,可能的值是: TopDown (看图 5.13) 和 BottomUp.
矩形
长方形常用在一个元素周围的边框。这个边界用一个较粗的前景色线来画的。背景被背景色填充,如果这个元素没有被定义为透明的话。
长方形的特殊性在JasperReports中会有一个rounded comers。被定义的意思的是radius属性,描绘弯曲度在你画一个拐角时,使用像素。
椭圆
椭圆是唯一一个没有自己的属性的元素。至于长方形,它的边框也是用一个粗的颜色是前景色的线画的。背景被背景色填充如果这个元素没有被定义为transparent。椭圆被画在长方形内切边与长方形的四条边相切。
图象
(像GIF, PNG, JPEG, etc...) 插入到报表中,但它也能被使用作为一个 canvas
对象,, 你可以画一种箱子:这个图象元素被使用,例如,画一个图表或一个条形码。
Image Expression 它是一个java表达式。它的结果是一个被Image
Expression Class attribute; 以返回类型为理由,图象被装载改变的方式;
Image Expression Class 表达式的返回类型。
表格5.4概述了Image Expression Class可能采用和描述Image Expression结果的解释。
| |
java.lang.String | 一个被认为是一个文件名的字符串;JasperReports将设法解释这个字符串想一个绝对的路径;如果没发现文件,它将设法加载指定名字的源从classpath 正确的表达式是: “c://devel//ireport//myImage.jpg” “it/businesslogic/ireport/icons/logo.gif” |
java.io.File | 指定一个文件对象作为图象去加载。 正确的表达式可能是: new java.io.File(“c://myImage.jpg”) |
java.net.URL | 指定It specifies the java.net.URL 对象。当你以html格式输出报表时使用它。 正确的表达式可能是: New java.net.URL(“http://127.0.0.1/test.jpg”) |
java.io.InputStream | 指定一个准备读取的java.io.InputStream对象;既然这样我们就不能考虑图象存在或它在一个文件中:大多数我们读取一图象从数据库,返回一个inputStream。 正确的表达式可能是: MyUtil.getInputStream(${MyField}) |
java.awt.Image | 指定一个java.awt.Image对象;当一个图象对象被创建时大概返回一个简单的对象; 正确的表达式可能是: MyUtil.createChart() |
JRRenderable | 指定一个使用 net.sf.jasperreports.engine.JRRenderable 接口的对象。 |
在这个例子中我们有解释, MyUtil 代表一个创造类。如果你想使用一个创造类通过调用一个static 方法去运行特殊的细节,就需要使用一个属于它的包(例如
在Image Expression 中使用字段,变量和参数,它将加载或生成图象以变化的方式(像已经发生的,例如,在detail中生成一个有图象的目录,每个目录关联一个图象)
Scale Image 定义图象怎样适应元素的尺度;可能的值有三个:
- RetainShape 图象适合元素的尺寸,但保持图象原来的比例
Vertical alignment 这个属性用来定义图象为垂直队列依照元素区域; 可能的值是:
Horizontal alignment 依照元素区域,图象被定义到水平队列;可能的值是:
赋值时间是一个非常有用的功能,它将被解释在JasperReport手册中。可能的值:
Evaluation group 同 Evaluation time.
图形元素(和text元素)可以被想象成一个框架,或者可以定义它的四个边的值。
它是元素元素和内容之间的空间。边框和内容被定义在border选项卡。他们的属性被介绍在JasperReports0.6.3版本。
一个简单查看图形效果的方式就选择border选项卡中间的显现边框。
文本元素
和图形元素一样,文本元素也有一个允许查看的公共属性:它是font选项卡(图5.24)
“font” 选项卡是用来设置元素中文本的属性,所以不仅仅是字体(字符的类型和尺寸),还有文本的队列,可能的rotation和线空间。
Report font 是一个边框形式字体的名字。从这里可以设置所有字符的属性;边框形式字体可以定义报表的标准和管理他们通过选择菜单:View→Report fonts;
- Single 单行写如;(预先确定值predefined value);
- Left the 文本逆时针旋转90度,它被打印从底到顶,水平和垂直队列依照文本;始针4
ionports0.6.3banbe the 旋转(例如,文本开始打印将沿这底边垂直队列画顶的界限开始);
- Right the 文本顺时针旋转90度从顶到底,垂直和水平队列依照文本旋转;
静态文本
文本域
文本区域可以打印一个java表达式的值。简单例子就是打印一个字符串(java.lang.String)来自于一个表达式想这个:“Hello World!”
和图象一样,一个超文本连接可以关联textfields,可以在HyperLink中定义
Textfield Expression Class it指定域表达式的返回类型;可能的值有许多,包括所有的由sql类型组成和一些管理数据的类的java对象,以下表格列出了所有可选的类型的。
|
java.lang.Object |
java.lang.Boolean |
java.lang.Byte |
java.util.Date |
java.sql.Timestamp |
java.sql.Time |
java.lang.Double |
java.lang.Float |
java.lang.Integer |
java.io.InputStream |
java.lang.Long |
java.lang.Short |
java.math.BigDecimal |
java.lang.String |
列表中包含的 java.lang.Object 类型能够在没有其他类型可以联合数据使用。
Evaluation time 指定报表创建Textfield在那个阶段赋值;
Stretch with overflow 当它被选择时,这个选项可以垂直的改变内容,如果元素不能充分的包含在文本线内的话;
Blank when null 当域表达式返回一个null值时允许打印空白;
Pattern 指定字符串可以使用Format类,指定用Textfield Expression Class是正确的。
JasperReports能格式化日期和数字;下面的表格概述中的一些例子包括字母和他们的意义可以快速的创建日期和数字。
| | |
G | Era designator | AD |
y | Year | 1996; 96 |
M | Month in year | July; Jul; 07 |
w | Week in year | 27 |
W | Week in month | 2 |
D | Day in year | 189 |
d | Day in month | 10 |
F | Day of week in month | 2 |
E | Day in week | Tuesday; Tue |
a | Am/pm marker | PM |
H | Hour in day (0-23) | 0 |
k | Hour in day (1-24) | 24 |
K | Hour in am/pm (0-11) | 0 |
h | Hour in am/pm (1-12) | 12 |
m | Minute in hour | 30 |
s | Second in minute | 55 |
S | Millisecond | 978 |
z | Time zone | Pacific Standard Time; PST; GMT-08:00 |
Z | Time zone | -0800 |
| |
"yyyy.MM.dd G 'at' HH:mm:ss z" | 2001.07.04 AD at 12:08:56 PDT |
"EEE, MMM d, ''yy" | Wed, Jul 4, '01 |
"h:mm a" | 12:08 PM |
"hh 'o''clock' a, zzzz" | 12 o'clock PM, Pacific Daylight Time |
"K:mm a, z" | 0:08 PM, PDT |
"yyyyy.MMMMM.dd GGG hh:mm aaa" | 02001.July.04 AD 12:08 PM |
"EEE, d MMM yyyy HH:mm:ss Z" | Wed, 4 Jul 2001 12:08:56 -0700 |
"yyMMddHHmmssZ" | 010704120856-0700 |
| | | |
0 | Number | Yes | 阿拉伯数字 |
# | Number | Yes | 阿拉伯数字, 0作为缺省的 |
. | Number | Yes | 十进制或货币分割付 |
- | Number | Yes | 负号 |
, | Number | Yes | 分组号 |
E | Number | Yes | 科学符号中为单独是尾数和说明Separates mantissa and exponent in scientific notation. 不需要引用像素或后缀Need not be quoted in prefix or suffix. |
; | Subpattern boundary | Yes | 分割正负样式Separates positive and negative subpatterns |
% | Prefix or suffix | Yes | 乘以100使用百分号 |
/u2030 | Prefix or suffix | Yes | 乘以1000使用每一千 |
¤ (/u00A4) | Prefix or suffix | No | Currency sign, replaced by currency symbol. If doubled, replaced by international currency symbol. If present in a pattern, the monetary decimal separator is used instead of the decimal separator.
|
' | Prefix or suffix | No | 引用特殊字符Used to quote special characters in a prefix or suffix, for example, "'#'#" formats 123 to "#123". To create a single quote itself, use two in a row: "# o''clock". |
| |
"#,##0.00" | 1.234,56 |
"#,##0.00;(#,##0.00)" | 1.234,56 (-1.234.56) |
通过“create”按钮可以打开样式编辑,意思就是数字,日期,流通等的简单格式
Textfield Expression 是一个打印表达式,返回在Textfield Expression Class;中设置的类型
可以转变StaticText在Textfield通过选择和按F3键。
为了能快速的改变一个或更多个普通文本元素的表达式可以选择他们和按F2键。
子报表
子报表是包含在其他报表中的一个元素,由一个jasper文件和在子报表的属性中被指定的datasource提供数据开始创建。
以下是关于子报表特征的一些简要插图。由于这个子栏目的复杂性,我们将在另一章详细解释。
Parameters Map Expression 定义一个运行时赋值的表达式;这个表达式必须返回java.util.Map;这个map中包含一些名值对,这些名值对将被传递给子报表作为参数值;
Connection/Datasource expression 定义一个返回JDBC连接或JRDataSource用来填充子报表;
Using cache 保存或不保存数据到内存,以便能快速的加载数据再下一次;
Subreport expression 定义一个在运行时返回Subreport expression class对象的表达式。依照返回类型,表达式被赋值为了恢复用来生成子报表的jasper对象;
Subreport parameters this 这个表可以定义一些使用适当的表达式动态提供的名值对给子报表;
专用元素
除了JasperReports提供的原始的元素外, iReport提供两个”合成”元素为他们的普通属性和补偿使用图形元素。
图表
条形码
|
2of7 |
3of9 |
Bookland |
Codabar |
Code128 |
Code128A |
Code128B |
Code128C |
Code39 |
EAN128 |
EAN13 |
GlobalTradeItemNumber |
Int2of5 |
Int2of5 |
Monarch |
NW7 |
PDF417 |
SCC14ShippingCode |
ShipmentIdentificationNumber |
SSCC18 |
Std2of5 |
Std2of5 |
UCC128 |
UPCA |
USD3 |
USD4 |
USPS |
Checksum it specifies the code 控制条形码是否被打印指定的代码;这个特征仅仅被条形码的一些类型提供;
Barcode Expression 指定以来于条形码的表达式的值;总是返回string类型的值;
Evaluation time e Evaluation group 和图形元素的意思一样;
超连接
图形和文本域元素都能被用做一个anchor(锚)在文档中,作为超连接指向源或其他本地的anchor(锚)。锚是一种特殊的“标签”用来识别文档中特殊的位置。
超连接和锚可以通过Hyper Link(图5.35)选项卡来定义。这是分开的两部分。上部分是一个文本域,这里可以指定这个锚的名字。这个名字可以被其他的连接引用。
JasperReports 可以创建五个类型的超连接: Reference,
Reference
The Reference 连接指出一个外部的源,一个可以被通过点URL识别的源,例如一个服务器去管理向下的记录功能。这表达式仅仅需要Hypelink Reference Expression.
LocalAnchor
点这个本地锚意思就是创建一个连接在同一文档之间。它可以被使用,例如通过一个标题的连接可以找到相应的章节。
定义一个本地锚去要指定一个能生成有效名字的Hyperlink Anchor Expression