說說 Jaspersoft Studio 的報表元素

Jaspersoft Studio 有這些基礎(chǔ)元素:

  1. 線(Line)
  2. 矩形(Rectangle)
  3. 橢圓(Ellipse)
  4. 靜態(tài)文本(Static Text)
  5. 字段文本(Text field)
  6. 圖片(Image)
  7. 框架(Frame)
  8. 子報表(Subreport)
  9. 交叉報表(Crosstab)
  10. 圖表(Chart)
  11. 段落之間的空白(Break)

組合這些元素,就能創(chuàng)建出一個非常復雜的報表航揉。甚至還支持自定義的報表元素悔耘!現(xiàn)在讓我們來看看吧O(∩_∩)O~

1 基礎(chǔ)元素

每一種元素都有相應的屬性者蠕,它們決定了這個元素的外觀以及位置等具體表現(xiàn)教翩〈伲可以把這些元素放在欄(bands)中或者放在容器中秽晚,欄的高度依賴于這些元素內(nèi)容的高度瓦糟。

1.1 元素列表面板(Palette)

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

元素列表面板又分為兩個子面板:

名稱 說明
Basic Elements 基礎(chǔ)元素列表赴蝇。
Composite Elements 組合元素(由多個基礎(chǔ)元素組合而成)菩浙,支持自定義組合元素。

1.2 元素的屬性

元素的具體屬性依賴于具體的元素類型句伶,下面是矩形元素的屬性視圖:

屬性頁簽 可設置項(屬性)
Appearance 位置劲蜻、大小、顏色以及文本樣式考余。
Borders 內(nèi)間距先嬉、邊框樣式、顏色以及元素的寬度秃殉。
具體元素名稱(比如上圖中的 Rectangle) 元素特有的屬性坝初。
Inheritance 繼承而來的屬性。
Hyperlink 定義超鏈接钾军,只在 image鳄袍、text field 以及 chart 元素中可見。
Advanced 元素的高級設置項列表吏恭,可以在此進行精細控制拗小。

如果一個屬性即使沒有被明確定義,它也會有一個默認值樱哼。這個默認值一般來源于它繼承的對象哀九。

2 元素的插入、選擇以及位置調(diào)整

2.1 插入元素

用鼠標從 Palette 中拖拽出需要的元素搅幅,放到欄內(nèi)阅束,這時的元素會有一個默認的寬度大小。

然后就可以使用鼠標來調(diào)整這個元素的高度與寬度啦:

2.2 選中多個元素

使用鼠標在你所需要選中的多個元素外圍茄唐,畫一個大矩形息裸,把這些元素都包圍在內(nèi),就可以一次性選中多個元素:

注意,選中多個元素后呼盆,它們的 properties 面板就只會展示這些元素所共同擁有的屬性年扩!

2.3 調(diào)整元素的位置

2.3.1 使用 Gird 的頁面排版方式

默認會在背景中展示 Grid 的小格子,這可以在 View -> Show Grid 中進行控制访圃。默認會讓元素緊貼著這些小格子厨幻,這可以在 View -> Snap to Grid 中進行控制。

2.3.2 使用欄

元素的位置是以離它所歸屬的容器(band 或者 frame)的頂部和左邊的距離來界定的腿时。

可以在 Outline 面板中况脆,把一個元素從一個欄拖拽到另一個欄。也可以在報表的編輯區(qū)域中圈匆,直接使用鼠標漠另,把一個元素從一個欄拖拽到另一個欄。

2.3.3 使用提示線條

在拖拽元素的過程中跃赚,報表的編輯區(qū)域會有時候出現(xiàn)提示線條笆搓,這可以很方便地對元素進行美化排版。

2.3.4 Properties 視圖面板

可以在這個面板中纬傲,對元素的位置進行更精細的控制:

2.4 在容器中調(diào)整元素的位置

這里的容器指的是欄(bands)满败、框架(frames)、表格單元格(table cells)叹括、交叉表格單元格(crosstab cells)算墨,它們都可以包含多個其他類型的元素。

在容器中的元素遵循以下規(guī)則:

  1. 在表格單元格汁雷、交叉表格單元格的元素必須完全填充它所歸屬的容器净嘀。
  2. frames 會根據(jù)它的內(nèi)容來伸展它的大小。
  3. 在 bands 中的元素可能會橫向擴展侠讯,甚至超過文檔的外邊距挖藏;也可能超過 band 的頂部。

2.4.1 容器的布局

有四種容器布局:

  1. 自由布局(Free layout)厢漩,默認膜眠。
  2. 水平布局(Horizontal layout)。
  3. 垂直布局(Vertical layout)溜嗜。
  4. 網(wǎng)格布局(Grid layout)宵膨。

有兩種方式可以選擇容器布局:

  1. 右鍵選擇某個容器,然后選擇 “Arrange In Container”炸宵,最后再選擇你想要的容器布局辟躏。
  1. 先選擇某個容器,然后在相應容器的 Properties 面板中土全,Appearance->Layout 中進行下拉選擇即可:

2.4.2 網(wǎng)格布局

在網(wǎng)格布局中鸿脓,容器中的元素都會適配到一個個小格子中抑钟,類似流式布局涯曲。里面的元素可以跨多行格子或者多列格子野哭。

這是自由布局下的元素:

現(xiàn)在我們改為網(wǎng)格布局:

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

現(xiàn)在打開在網(wǎng)格布局中的某個元素幻件,可以看到在網(wǎng)格布局下的 layout 配置項:

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

別怕拨黔,我們下面會一一介紹的:

屬性名 說明
Row Number Relative(默認值);或者是整型绰沥,范圍在 0~1000篱蝇。 所在行號,0 表示第 1 行徽曲。如果設置為 Relative零截,那么它會緊跟在跟它處在同一行的上一個元素之后。
Column Number Relative(默認值)秃臣;或者是整型涧衙,范圍在 0~1000。 所在列號奥此,0 表示第 1 列弧哎。如果設置為 Relative,那么它會緊跟在跟它處在同一列的上一個元素之后稚虎。
Row Span 整型撤嫩,范圍在 0~1000,默認值為 1蠢终。 元素跨越的行數(shù)序攘。
Column Span 整型,范圍在 0~1000寻拂,默認值為 1程奠。 元素跨越的列數(shù)。
Fixed Size 布爾型兜喻,默認為 false梦染。 true 表示可以手動控制元素的大小网沾。false 表示通過其他元素的屬性設置來自動控制元素的大小东抹。
Row Weight Number,默認值為 1胰柑。 指定這個元素的行數(shù)——相對于其他行中的元素的多少倍遂铡。
Column Weight Number肮疗,默認值為 1。 指定這個元素的列數(shù)——相對于其他列中的元素的多少倍扒接。

2.5 網(wǎng)格布局演示示例

1伪货、這個示例中使用了一個垂直型的圖片们衙,也就是它的高度比寬度大很多。現(xiàn)在創(chuàng)建一個新的報表碱呼,模板采用 Green Leaf template蒙挑。這時到項目所在的文件夾中就可以找到一個 leaf_banner_green.png,我們使用 win7 系統(tǒng)的圖片工具做一個 90 度旋轉(zhuǎn)愚臀,就可以變成一個垂直型的圖片忆蚀。

先建好模板,然后到項目所在目錄找到圖片姑裂,對其進行旋轉(zhuǎn):


2馋袜、現(xiàn)在創(chuàng)建一個 BlankA4 模板的報表,使用空的數(shù)據(jù)源舶斧。

3欣鳖、 通過 Palette 的 Image 元素,把剛才的垂直型的圖片放入到報表的 title 欄(為了演示方便茴厉,可以把其他的欄刪除掉)泽台。

4、通過 Palette 的 Chart 元素呀忧,新增一個 Area Chart师痕,放在垂直型的圖片的右邊。

5而账、拖拽 title 欄胰坟,讓它的高度與圖表的高度一致:

6、在空白處泞辐,右鍵選擇 Arrage in Container > Grid Layout笔横;也可以在 Title 欄的屬性面板中選擇 Grid Layout,變?yōu)榫W(wǎng)格布局:

7咐吼、選擇圖表元素吹缔,在屬性面板中,把 Column Weight 改為 5锯茄,讓圖表的寬度變?yōu)榇怪毙蛨D片寬度的 5 倍:

修改后的效果:


8厢塘、新增一個 static text 元素,放在 title 欄的最右側(cè)肌幽,新增的元素會被放在同一行晚碾,緊跟在圖表后面:

9、修改 static text 元素的位置喂急,選擇這個元素格嘁,然后在屬性面板中:

  • 把 Row Number 改為 1,把這個元素移動到下一行廊移。
  • 把 Column Span 改為 2糕簿,讓這個元素可以跨 2 列探入。

10、把圖表的 Row Weight 改為 10懂诗,這樣圖表就成為這張報表最引人注目的部分咯:

3 格式化元素

右鍵選擇某個元素蜂嗽,在上下文菜單中就能看到格式化工具項。

3.1 調(diào)整所在層(Order)

工具名稱 說明 是否可多選
Bring to Front 放到最頂層
Bring Forward 放在當前層的上一層
Send Backward 放在當前層的下一層
Send to Back 放到最底層

3.2 容器內(nèi)的對齊方式(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 調(diào)整大邢烨荨(Size to Container)

工具名稱 說明 是否可多選
Fit to Width 元素寬度與容器的寬度一致
Fit to Height 元素寬度與容器的高度一致
Fit to Both 元素寬度與容器的高度與寬度一致

3.4 調(diào)整布局(Arrange in Container Tools)

工具名稱 說明 是否可多選
Free Layout 自由布局
Horizontal Layout 水平布局
Vertical Layout 垂直布局
Grid Layout 網(wǎng)格布局

3.5 其它

工具名稱 說明
Stretch to Content 讓元素的大小與它的內(nèi)容大小相一致徒爹。
PDF 508 Tags 為 PDF 508C 的編譯格式添加標簽。
XLS Tags 為 Excel 格式添加標簽芋类,用于定義數(shù)據(jù)的導出方式。

4 圖表元素

使用圖表元素可以讓報表更具可讀性界阁,而且也更有吸引力侯繁。

4.1 線條(Line)

一條線是被一個矩形框起來的斜線,就像這樣:

默認情況下泡躯,線條前景色采用默認顏色贮竟,寬度為 1px〗咸辏可以在屬性面板中自定義線條的外觀咕别。

4.2 矩形(Rectangle)和橢圓(Ellipse)

矩形元素一般用于畫一個框把某些元素框起來,它的前景色采用默認顏色写穴,寬度為 1px惰拱。

橢圓元素比較特別,它唯一一個沒有自己獨立的屬性標簽項的元素啊送!它會被一個矩形框起來偿短,像這樣:

4.3 圖片(Images)

可以插入各種圖片(諸如 GIF、PNG 以及 JPEG)馋没,也可以插入作為 canvas 對象的圖片元素昔逗,甚至可以自定義 Swing 組件。

在 Palette 中把 Images 元素拖拽到報表編輯區(qū)篷朵,這時就會打開一個圖片對話框:

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

注意勾怒,Jaspersoft Studio 不會實際保存這些選擇的圖片,它只會保存文件路徑声旺!

4.4 image 和 text 元素的內(nèi)邊距與邊框設置

image 和 text 元素中的內(nèi)邊距(Paddings)指的是元素邊界與它的內(nèi)容之間距離笔链,它包含四個方向的設置。

邊框(Borders)中可以設置元素的顏色艾少、樣式以及寬度卡乾。

這些設置項單位都是像素!

5 文本元素(Text)

靜態(tài)文本(static text) 和 文本字段(text field)元素都可以用于文本的顯示缚够。

靜態(tài)文本元素用于創(chuàng)建文本標簽幔妨,一旦定義好鹦赎,就不會改變。

文本字段元素與靜態(tài)文本元素功能相似误堡,但它的內(nèi)容可以是表達式古话,也就是說它可以動態(tài)改變,所以叫它動態(tài)文本可能更貼切些锁施。

默認情況下陪踩,這兩種元素都是透明的、無邊框并且使用的是黑色字體顏色悉抵。

5.1 靜態(tài)文本元素

它的內(nèi)容只能是普通文本肩狂!

5.2 文本字段元素

文本字段元素很強大,它可以使用各種表達式姥饰,所以它可以很容易替換掉靜態(tài)文本元素所提供的功能傻谁!它最常用的地方是報表的國際化功能,通過定義表達式列粪,這些文本就可以根據(jù)國際化的要求审磁,變?yōu)椴煌瑖业恼Z言!文本字段表達式(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 不正確岂座,那么就會發(fā)生編譯錯誤态蒂。如果使用了 Groovy 或者 JavaScript 腳本,那么可以選擇 String 類型的表達式费什,否則也會發(fā)生編譯錯誤钾恢。

除了表達式(Expression)之外,文本字段元素還有這些屬性:

屬性 說明
Blank when NULL 如果設為 true吕喘,那么當遇到內(nèi)容為 null 時赘那,將不會打印出 “null”。
Evaluation Time 表達式是在哪一個階段被執(zhí)行氯质。
Stretch with overflow 如果被勾選募舟,則表示如果元素內(nèi)容太長,無法在一行內(nèi)顯示時闻察,那么內(nèi)容將會被跨行顯示拱礁。如果沒有勾選 Stretch with overflow ,那么過長的內(nèi)容將會被截斷掉辕漂!
Pattern 可以對內(nèi)容進行格式化呢灶,它也是一個表達式。

6 框架(frame)

框架元素內(nèi)部可以包含其他元素钉嘹。

可以直接把元素拖拽到框架元素中鸯乃;也可以在 outline 標簽頁中,把元素拖拽到框架元素中跋涣。

如果容器是一個 band缨睡,則內(nèi)部元素坐標的相對位置是這個 band 的頂部與左邊的外邊距大心胥病;而如果容器是一個 frame奖年,則內(nèi)部元素坐標的相對位置是這個 frame 的頂部與左邊的大小细诸。

使用 frame 的好處是,可以畫一個邊框把某一類的元素圈起來陋守,這里推薦使用矩形框震贵,這樣這些元素就可以作為一個整體統(tǒng)一操作咯:

  • 移動一個 frame,包含在這個 frame 的所有元素都會一起被移動水评。
  • frame 的大小會自適應它的內(nèi)容大小猩系。

7 使用組合元素

組合元素指的是之前預配置好的元素。Jaspersoft Studio 中內(nèi)置了一些組合元素之碗,諸如 page number 等:

image

組合元素只能包含以下這些元素:notes蝙眶、text fields、static text褪那、images、breaks式塌、rectangles博敬、ellipses、lines峰尝、frames偏窝、barcodes、HTML 元素以及其他的組合元素武学。

如果組合元素內(nèi)部祭往,使用了帶有表達式的元素,這些表達式對象應該是即時可用火窒,否則就會拋出錯誤硼补。

注意: 組合元素不能包含基于數(shù)據(jù)集的元素,比如圖表熏矿、交叉報表等已骇。

7.1 創(chuàng)建并編輯組合元素

1、新建一張 A4 大小的空報表票编,然后把要組合的元素放在 Title band(組合元素只能從這里生成M蚀ⅰ)。

2慧域、這里我們創(chuàng)建一個【頁尾組合】元素鲤竹,它包含公司名稱以及當前頁號:
【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)

image

4蛹屿、右鍵保存為組合元素(Save as Composite Element)

組合元素設置

輸入名稱、描述岩榆,再選擇圖標(如果沒有選擇错负,會使用默認的圖標),最后是選擇在 Palette 中的位置勇边。保存后就可以在 Palette 中看到啦:

image

刪除組合元素很簡單:選中某個組合元素犹撒,然后點擊右鍵 -》刪除。只能刪除我們自定義的組合元素哦O(∩_∩)O~

7.2 導出與導入組合元素

選中某個組合元素粒褒,然后點擊右鍵 -》導出或?qū)胧都眨芎唵蔚睦玻赃@里就不詳述咯O(∩_∩)O~

8 錨奕坟、書簽以及超文本鏈接

定義一個 URL祥款,那么在導出的 PDF 中,用戶就可以點擊某個 URL月杉,查看更詳細的信息啦O(∩_∩)O~

圖片刃跛、text field 或者圖表元素的屬性中,都有一個 Hyperlink 標簽頁苛萎。

image

8.1 錨與書簽

一個錨(anchor)可以指定文檔中的一個特殊的位置桨昙。如果導出的是 PDF,還可以指定書簽的級別腌歉。

8.2 超文本鏈接(Hyperlinks)

超文本鏈接中蛙酪,最重要的屬性是 Link Type,它決定了目標的格式翘盖。
還有這些屬性:

  • Link Target——指定打開目標鏈接的位置(Self,Blank,Top 以及 Parent)桂塞。
  • Hyperlink When Expression——當表達式返回 true 時,才添加超文本鏈接最仑。
  • Tooltip Expression——當鼠標滑過超文本鏈接時藐俺,需要展示的提示信息,它是一個表達式泥彤。

8.2.1 創(chuàng)建 URL 鏈接

可以把 field 的值動態(tài)地傳送給 URL欲芹,像這樣:

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

8.2.2 創(chuàng)建報表鏈接

在 PDF 與 HTML 中,支持以下類型:

  • LocalAnchor - 在同一份文檔中創(chuàng)建錨吟吝。
  • LocalPage - 在同一份文檔中的指定頁創(chuàng)建錨菱父。
  • RemoteAnchor - 指定了其他文檔中的某個位置的錨。
  • RemotePage - 指定了其他文檔中的某個特別頁面位置的錨。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末浙宜,一起剝皮案震驚了整個濱河市官辽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌粟瞬,老刑警劉巖同仆,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異裙品,居然都是意外死亡俗批,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門市怎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來岁忘,“玉大人,你說我怎么就攤上這事区匠「上瘢” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵驰弄,是天一觀的道長麻汰。 經(jīng)常有香客問我,道長戚篙,這世上最難降的妖魔是什么什乙? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮已球,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘辅愿。我一直安慰自己智亮,他們只是感情好,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布点待。 她就那樣靜靜地躺著阔蛉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪癞埠。 梳的紋絲不亂的頭發(fā)上状原,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機與錄音苗踪,去河邊找鬼颠区。 笑死,一個胖子當著我的面吹牛通铲,可吹牛的內(nèi)容都是我干的毕莱。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼朋截!你這毒婦竟也來了蛹稍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤部服,失蹤者是張志新(化名)和其女友劉穎唆姐,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體廓八,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡奉芦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了瘫想。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片仗阅。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖国夜,靈堂內(nèi)的尸體忽然破棺而出减噪,到底是詐尸還是另有隱情,我是刑警寧澤车吹,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布筹裕,位于F島的核電站,受9級特大地震影響窄驹,放射性物質(zhì)發(fā)生泄漏朝卒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一乐埠、第九天 我趴在偏房一處隱蔽的房頂上張望抗斤。 院中可真熱鬧,春花似錦丈咐、人聲如沸瑞眼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽伤疙。三九已至,卻和暖如春辆影,著一層夾襖步出監(jiān)牢的瞬間徒像,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工蛙讥, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留锯蛀,地道東北人。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓键菱,卻偏偏與公主長得像谬墙,于是被迫代替她去往敵國和親今布。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容