Jaspersoft Studio 有這些基礎元素:
- 線(Line)
- 矩形(Rectangle)
- 橢圓(Ellipse)
- 靜態文本(Static Text)
- 字段文本(Text field)
- 圖片(Image)
- 框架(Frame)
- 子報表(Subreport)
- 交叉報表(Crosstab)
- 圖表(Chart)
- 段落之間的空白(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 視圖面板
可以在這個面板中,對元素的位置進行更精細的控制:

2.4 在容器中調整元素的位置
這里的容器指的是 欄(bands)、框架(frames)、表格單元格(table cells)、交叉表格單元格(crosstab cells),它們都可以包含多個其他類型的元素。
在容器中的元素遵循以下規則:
- 在表格單元格、交叉表格單元格的元素必須完全填充它所歸屬的容器。
- frames 會根據它的內容來伸展它的大小。
- 在 bands 中的元素可能會橫向擴展,甚至超過文檔的外邊距;也可能超過 band 的頂部。
2.4.1 容器的布局
有四種容器布局:
- 自由布局(Free layout),默認。
- 水平布局(Horizontal layout)。
- 垂直布局(Vertical layout)。
- 網格布局(Grid layout)。
有兩種方式可以選擇容器布局:
- 右鍵選擇某個容器,然后選擇 “Arrange In Container”,最后再選擇你想要的容器布局。
- 先選擇某個容器,然后在相應容器的 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 倍:

8、新增一個 static text 元素,放在 title 欄的最右側,新增的元素會被放在同一行,緊跟在圖表后面:

9、修改 static text 元素的位置,選擇這個元素,然后在屬性面板中:
- 把 Row Number 改為 1,把這個元素移動到下一行。
- 把 Column Span 改為 2,讓這個元素可以跨 2 列。

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 ,那么過長的內容將會被截斷掉!
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 - 指定了其他文檔中的某個特別頁面位置的錨。