说说 Jaspersoft Studio 的报表元素

Jaspersoft Studio 有这些基础元素:

  1. 线(Line)
  2. 矩形(Rectangle)
  3. 椭圆(Ellipse)
  4. 静态文本(Static Text)
  5. 字段文本(Text field)
  6. 图片(Image)
  7. 框架(Frame)
  8. 子报表(Subreport)
  9. 交叉报表(Crosstab)
  10. 图表(Chart)
  11. 段落之间的空白(Break)

组合这些元素,就能创建出一个非常复杂的报表。甚至还支持自定义的报表元素!现在让我们来看看吧O(∩_∩)O~

1 基础元素

每一种元素都有相应的属性,它们决定了这个元素的外观以及位置等具体表现。可以把这些元素放在栏(bands)中或者放在容器中,栏的高度依赖于这些元素内容的高度。

1.1 元素列表面板(Palette)

默认情况下,元素列表面板位于主界面的右上位置:

元素列表面板
元素列表面板

元素列表面板又分为两个子面板:

名称 说明
Basic Elements 基础元素列表。
Composite Elements 组合元素(由多个基础元素组合而成),支持自定义组合元素。

1.2 元素的属性

元素的具体属性依赖于具体的元素类型,下面是矩形元素的属性视图:

矩形元素的属性视图
矩形元素的属性视图
属性页签 可设置项(属性)
Appearance 位置、大小、颜色以及文本样式。
Borders 内间距、边框样式、颜色以及元素的宽度。
具体元素名称 元素特有的属性。
Inheritance 继承而来的属性。
Hyperlink 定义超链接,只在 image、text field 以及 chart 元素中可见。
Advanced 元素的高级设置项列表,可以在此进行精细控制。

如果一个属性即使没有被明确定义,它也会有一个默认值。这个默认值一般来源于它继承的对象。

2 元素的插入、选择以及位置调整

2.1 插入元素

用鼠标从 Palette 中拖拽出需要的元素,放到栏内,这时的元素会有一个默认的宽度大小。

然后就可以使用鼠标来调整这个元素的高度与宽度啦:

鼠标来调整这个元素的高度与宽度
鼠标来调整这个元素的高度与宽度

2.2 选中多个元素

使用鼠标在你所需要选中的多个元素外围,画一个大矩形,把这些元素都包围在内,就可以一次性选中多个元素:

一次性选中多个元素
一次性选中多个元素

注意,选中多个元素后,它们的 properties 面板就只会展示这些元素所共同拥有的属性!

2.3 调整元素的位置

2.3.1 使用 Gird 的页面排版方式

默认会在背景中展示 Grid 的小格子,这可以在 View -> Show Grid 中进行控制。默认会让元素紧贴着这些小格子,这可以在 View -> Snap to Grid 中进行控制。

2.3.2 使用栏

元素的位置是以离它所归属的容器(band 或者 frame)的顶部和左边的距离来界定的。

可以在 Outline 面板中,把一个元素从一个栏拖拽到另一个栏。也可以在报表的编辑区域中,直接使用鼠标,把一个元素从一个栏拖拽到另一个栏。

2.3.3 使用提示线条

在拖拽元素的过程中,报表的编辑区域会有时候出现提示线条,这可以很方便地对元素进行美化排版。

2.3.4 Properties 视图面板

可以在这个面板中,对元素的位置进行更精细的控制:

Properties 视图面板
Properties 视图面板

2.4 在容器中调整元素的位置

这里的容器指的是 栏(bands)、框架(frames)、表格单元格(table cells)、交叉表格单元格(crosstab cells),它们都可以包含多个其他类型的元素。

在容器中的元素遵循以下规则:

  1. 在表格单元格、交叉表格单元格的元素必须完全填充它所归属的容器。
  2. frames 会根据它的内容来伸展它的大小。
  3. 在 bands 中的元素可能会横向扩展,甚至超过文档的外边距;也可能超过 band 的顶部。

2.4.1 容器的布局

有四种容器布局:

  1. 自由布局(Free layout),默认。
  2. 水平布局(Horizontal layout)。
  3. 垂直布局(Vertical layout)。
  4. 网格布局(Grid layout)。

有两种方式可以选择容器布局:

  1. 右键选择某个容器,然后选择 “Arrange In Container”,最后再选择你想要的容器布局。
  2. 先选择某个容器,然后在相应容器的 Properties 面板中,Appearance->Layout 中进行下拉选择即可:
选择容器布局
选择容器布局

2.4.2 网格布局

在网格布局中,容器中的元素都会适配到一个个小格子中,类似流式布局。里面的元素可以跨多行格子或者多列格子。

这是自由布局下的元素:

自由布局
自由布局

现在我们改为网格布局:

网格布局
网格布局

可以看出元素完全填充了它所在的容器!

现在打开在网格布局中的某个元素,可以看到在网格布局下的 layout 配置项:

网格布局中的某个元素
网格布局中的某个元素

是不是多了很多呀O(∩_∩)O~

别怕,我们下面会一一介绍的:

属性名 说明
Row Number Relative(默认值);或者是整型,范围在 0~1000。 所在行号,0 表示第 1 行。如果设置为 Relative,那么它会紧跟在跟它处在同一行的上一个元素之后。
Column Number Relative(默认值);或者是整型,范围在 0~1000。 所在列号,0 表示第 1 列。如果设置为 Relative,那么它会紧跟在跟它处在同一列的上一个元素之后。
Row Span 整型,范围在 0~1000,默认值为 1。 元素跨越的行数。
Column Span 整型,范围在 0~1000,默认值为 1。 元素跨越的列数。
Fixed Size 布尔型,默认为 false。 true 表示可以手动控制元素的大小。false 表示通过其他元素的属性设置来自动控制元素的大小。
Row Weight Number,默认值为 1。 指定这个元素的行数——相对于其他行中的元素的多少倍。
Column Weight Number,默认值为 1。 指定这个元素的列数——相对于其他列中的元素的多少倍。

2.5 网格布局演示示例

1、这个示例中使用了一个垂直型的图片,也就是它的高度比宽度大很多。现在创建一个新的报表,模板采用 Green Leaf template。这时到项目所在的文件夹中就可以找到一个 leaf_banner_green.png,我们使用 win7 系统的图片工具做一个 90 度旋转,就可以变成一个垂直型的图片。

2、现在创建一个 BlankA4 模板的报表,使用空的数据源。

3、 通过 Palette 的 Image 元素,把刚才的垂直型的图片放入到报表的 title 栏(为了演示方便,可以把其他的栏删除掉)。

4、通过 Palette 的 Chart 元素,新增一个 Area Chart,放在垂直型的图片的右边。

5、拖拽 title 栏,让它的高度与图表的高度一致:

网格布局演示示例
网格布局演示示例

6、在空白处,右键选择 Arrage in Container > Grid Layout;也可以在 Title 栏的属性面板中选择 Grid Layout,变为网格布局:

网格布局
网格布局

7、选择图表元素,在属性面板中,把 Column Weight 改为 5,让图表的宽度变为垂直型图片宽度的 5 倍:

Column Weight
Column Weight

8、新增一个 static text 元素,放在 title 栏的最右侧,新增的元素会被放在同一行,紧跟在图表后面:

新增一个 static text 元素
新增一个 static text 元素

9、修改 static text 元素的位置,选择这个元素,然后在属性面板中:

  • 把 Row Number 改为 1,把这个元素移动到下一行。
  • 把 Column Span 改为 2,让这个元素可以跨 2 列。
修改 static text 元素的位置
修改 static text 元素的位置

10、把图表的 Row Weight 改为 10,这样图表就成为这张报表最引人注目的部分咯:

图表就成为这张报表最引人注目的部分
图表就成为这张报表最引人注目的部分

3 格式化元素

右键选择某个元素,在上下文菜单中就能看到格式化工具项。

3.1 调整所在层(Order)

工具名称 说明 是否可多选
Bring to Front 放到最顶层
Bring Forward 放在当前层的上一层
Send Backward 放在当前层的下一层
Send to Back 放到最底层

3.2 容器内的对齐方式(Align in Container)

工具名称 说明 是否可多选
Align to Left 左对齐
Align to Center Horizontally 水平居中对齐
Align to Right 右对齐
Align to Top 顶部对齐
Align to Middle Vertically 垂直居中对齐
Align to Bottom 底部对齐
Center 完全居中对齐

3.3 调整大小(Size to Container)

工具名称 说明 是否可多选
Fit to Width 元素宽度与容器的宽度一致
Fit to Height 元素宽度与容器的高度一致
Fit to Both 元素宽度与容器的高度与宽度一致

3.4 调整布局(Arrange in Container Tools)

工具名称 说明 是否可多选
Free Layout 自由布局
Horizontal Layout 水平布局
Vertical Layout 垂直布局
Grid Layout 网格布局

3.5 其它

工具名称 说明
Stretch to Content 让元素的大小与它的内容大小相一致。
PDF 508 Tags 为 PDF 508C 的编译格式添加标签。
XLS Tags 为 Excel 格式添加标签,用于定义数据的导出方式。

4 图表元素

使用图表元素可以让报表更具可读性,而且也更有吸引力。

4.1 线条(Line)

一条线是被一个矩形框起来的斜线,就像这样:

线条
线条

默认情况下,线条前景色采用默认颜色,宽度为 1px。可以在属性面板中自定义线条的外观。

4.2 矩形(Rectangle)和椭圆(Ellipse)

矩形元素一般用于画一个框把某些元素框起来,它的前景色采用默认颜色,宽度为 1px。

椭圆元素比较特别,它唯一一个没有自己独立的属性标签项的元素!它会被一个矩形框起来,像这样:

椭圆元素
椭圆元素

4.3 图片(Images)

可以插入各种图片(诸如 GIF、PNG 以及 JPEG),也可以插入作为 canvas 对象的图片元素,甚至可以自定义 Swing 组件。

在 Palette 中把 Images 元素拖拽到报表编辑区,这时就会打开一个图片对话框:

图片对话框
图片对话框

是不是很强大呀O(∩_∩)O~

注意,Jaspersoft Studio 不会实际保存这些选择的图片,它只会保存文件路径!

4.4 image 和 text 元素的内边距与边框设置

内边距与边框
内边距与边框

image 和 text 元素中的内边距(Paddings)指的是元素边界与它的内容之间距离,它包含四个方向的设置。

边框(Borders)中可以设置元素的颜色、样式以及宽度。

这些设置项单位都是像素!

5 文本元素(Text)

静态文本(static text) 和 文本字段(text field)元素都可以用于文本的显示。

静态文本元素用于创建文本标签,一旦定义好,就不会改变。

文本字段元素与静态文本元素功能相似,但它的内容可以是表达式,也就是说它可以动态改变,所以叫它动态文本可能更贴切些。

默认情况下,这两种元素都是透明的、无边框并且使用的是黑色字体颜色。

5.1 静态文本元素

它的内容只能是普通文本!

5.2 文本字段元素

文本字段元素很强大,它可以使用各种表达式,所以它可以很容易替换掉静态文本元素所提供的功能!它最常用的地方是报表的国际化功能,通过定义表达式,这些文本就可以根据国际化的要求,变为不同国家的语言!文本字段表达式(text field expression)的 class 类型可以是这些:

表达式类型 表达式类型 表达式类型
java.lang.Object java.sql.Time java.lang.Long
java.lang.Boolean java.lang.Double java.lang.Short
java.lang.Byte java.lang.Float java.math.BigDecimal
java.util.Date java.lang.Integer java.lang.String
java.sql.Timestamp java.io.InputStream

如果表达式的 class 不正确,那么就会发生编译错误。如果使用了 Groovy 或者 JavaScript 脚本,那么可以选择 String 类型的表达式,否则也会发生编译错误。

除了表达式(Expression)之外,文本字段元素还有这些属性:

文本字段元素属性
文本字段元素属性
属性 说明
Blank when NULL 如果设为 true,那么当遇到内容为 null 时,将不会打印出 “null”。
Evaluation Time 表达式是在哪一个阶段被执行。
Stretch with overflow 如果被勾选,则表示如果元素内容太长,无法在一行内显示时,那么内容将会被跨行显示。
Pattern 可以对内容进行格式化,它也是一个表达式。

Stretch with overflow 未被勾选前:

Stretch with overflow 未被勾选前
Stretch with overflow 未被勾选前

Stretch with overflow 被勾选后:

Stretch with overflow 被勾选后
Stretch with overflow 被勾选后

可以看出,如果没有勾选 Stretch with overflow ,那么过长的内容将会被截断掉!

6 框架(frame)

框架元素内部可以包含其他元素。

可以直接把元素拖拽到框架元素中;也可以在 outline 标签页中,把元素拖拽到框架元素中。

如果容器是一个 band,则内部元素坐标的相对位置是这个 band 的顶部与左边的外边距大小;而如果容器是一个 frame,则内部元素坐标的相对位置是这个 frame 的顶部与左边的大小。

使用 frame 的好处是,可以画一个边框把某一类的元素圈起来,这里推荐使用矩形框,这样这些元素就可以作为一个整体统一操作咯:

  • 移动一个 frame,包含在这个 frame 的所有元素都会一起被移动。
  • frame 的大小会自适应它的内容大小。

7 使用组合元素

组合元素指的是之前预配置好的元素。Jaspersoft Studio 中内置了一些组合元素,诸如 page number 等:

组合元素只能包含这些元素:notes、text fields、static text、images、breaks、rectangles、ellipses、lines、frames、barcodes、HTML 元素以及其他的组合元素。

如果组合元素内部,使用了带有表达式的元素,这些表达式对象应该是即时可用,否则就会抛出错误。

注意: 组合元素不能包含基于数据集的元素,比如图表、交叉报表等。

7.1 创建并编辑组合元素

1、新建一张 A4 大小的空报表,然后把要组合的元素放在 Title band(组合元素只能从这里生成!)。

2、这里我们创建一个【页尾组合】元素,它包含公司名称以及当前页号:
【1】拖拽一个 Static Text 元素,键入公司名称,然后把它设置为【对齐到左边距】(Align in Container > Align to Left Margin)
【2】拖拽一个 Page Number 元素然后把它设置为【对齐到右边距】(Align in Container > Align to Right Margin),再把它的文本对齐方式改为右对齐(属性页中的 Text Field)

文本对齐方式

【3】选中这两个元素,右键修改它的组件对齐方式(Align in Container)为 Align Top。

3、选中这两个元素,然后把它们放入 Frame(右键-》Enclose into Frame)

4、右键保存为组合元素(Save as Composite Element)

组合元素设置

输入名称、描述,再选择图标(如果没有选择,会使用默认的图标),最后是选择在 Palette 中的位置。保存后就可以在 Palette 中看到啦:

删除组合元素很简单:选中某个组合元素,然后点击右键 -》删除。只能删除我们自定义的组合元素哦O(∩_∩)O~

7.2 导出与导入组合元素

选中某个组合元素,然后点击右键 -》导出或导入,很简单的啦,所以这里就不详述咯O(∩_∩)O~

8 锚、书签以及超文本链接

定义一个 URL,那么在导出的 PDF 中,用户就可以点击某个 URL,查看更详细的信息啦O(∩_∩)O~

图片、text field 或者图表元素的属性中,都有一个 Hyperlink 标签页。

8.1 锚与书签

一个锚(anchor)可以指定文档中的一个特殊的位置。如果导出的是 PDF,还可以指定书签的级别。

8.2 超文本链接(Hyperlinks)

超文本链接中,最重要的属性是 Link Type,它决定了目标的格式。
还有这些属性:

  • Link Target——指定打开目标链接的位置(Self,Blank,Top 以及 Parent)。
  • Hyperlink When Expression——当表达式返回 true 时,才添加超文本链接。
  • Tooltip Expression——当鼠标滑过超文本链接时,需要展示的提示信息,它是一个表达式。

8.2.1 创建 URL 链接

可以把 field 的值动态地传送给 URL,像这样:

"http://www.someurl.com/search?city=" + $F{city} + "&country= + $F{country}

8.2.2 创建报表链接

下面这里类型在 PDF 与 HTML 中得到支持:

  • LocalAnchor - 在同一份文档中创建锚。
  • LocalPage - 在同一份文档中的指定页创建锚。
  • RemoteAnchor - 指定了其他文档中的某个位置的锚。
  • RemotePage - 指定了其他文档中的某个特别页面位置的锚。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,012评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,589评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,819评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,652评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,954评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,381评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,687评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,404评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,082评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,355评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,880评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,249评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,864评论 3 232
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,007评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,760评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,394评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,281评论 2 259

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,625评论 1 92
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,544评论 25 707
  • 秋日在南方沿海城市,沉寂 热风扫过街巷,来回游弋 而远方黑色的沙土上,冰川千里 深秋的原野,以烙印般诉求的姿态 向...
    蒋菱阅读 445评论 0 1
  • 第4节前情回顾 前卫派有不少动物都想去试试,可尼克家却只有三五亩地,用不了这么多帮手,按照平常的劳动量,如果尼克...
    许秋月阅读 482评论 4 15
  • 感恩天气很好,感恩可以推掉所有的应酬,没有预约考场和考评,可以留在家里陪陪孩子们,做做家务,看看电视,给孩子们做做...
    念秀阅读 161评论 0 0