說說 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 - 指定了其他文檔中的某個特別頁面位置的錨。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,796評論 1 92
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,287評論 25 708
  • 秋日在南方沿海城市,沉寂 熱風掃過街巷,來回游弋 而遠方黑色的沙土上,冰川千里 深秋的原野,以烙印般訴求的姿態 向...
    蔣菱閱讀 468評論 0 1
  • 第4節前情回顧 前衛派有不少動物都想去試試,可尼克家卻只有三五畝地,用不了這么多幫手,按照平常的勞動量,如果尼克...
    許秋月閱讀 524評論 4 15
  • 感恩天氣很好,感恩可以推掉所有的應酬,沒有預約考場和考評,可以留在家里陪陪孩子們,做做家務,看看電視,給孩子們做做...
    念秀閱讀 177評論 0 0