Jaspersoft Studio 有這些基礎(chǔ)元素:
- 線(Line)
- 矩形(Rectangle)
- 橢圓(Ellipse)
- 靜態(tài)文本(Static Text)
- 字段文本(Text field)
- 圖片(Image)
- 框架(Frame)
- 子報表(Subreport)
- 交叉報表(Crosstab)
- 圖表(Chart)
- 段落之間的空白(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ī)則:
- 在表格單元格汁雷、交叉表格單元格的元素必須完全填充它所歸屬的容器净嘀。
- frames 會根據(jù)它的內(nèi)容來伸展它的大小。
- 在 bands 中的元素可能會橫向擴展侠讯,甚至超過文檔的外邊距挖藏;也可能超過 band 的頂部。
2.4.1 容器的布局
有四種容器布局:
- 自由布局(Free layout)厢漩,默認膜眠。
- 水平布局(Horizontal layout)。
- 垂直布局(Vertical layout)溜嗜。
- 網(wǎng)格布局(Grid layout)宵膨。
有兩種方式可以選擇容器布局:
- 右鍵選擇某個容器,然后選擇 “Arrange In Container”炸宵,最后再選擇你想要的容器布局辟躏。
- 先選擇某個容器,然后在相應容器的 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 等:
組合元素只能包含以下這些元素: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)
4蛹屿、右鍵保存為組合元素(Save as Composite Element)
輸入名稱、描述岩榆,再選擇圖標(如果沒有選擇错负,會使用默認的圖標),最后是選擇在 Palette 中的位置勇边。保存后就可以在 Palette 中看到啦:
刪除組合元素很簡單:選中某個組合元素犹撒,然后點擊右鍵 -》刪除。只能刪除我們自定義的組合元素哦O(∩_∩)O~
7.2 導出與導入組合元素
選中某個組合元素粒褒,然后點擊右鍵 -》導出或?qū)胧都眨芎唵蔚睦玻赃@里就不詳述咯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 創(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 - 指定了其他文檔中的某個特別頁面位置的錨。