(二)Hello world JasperReport

一、前言

    在工作中,尤其是傳統企業中,面不了會用到報表(包含圖表,子報表,交叉表等的複雜佈局)展示數據。學習JasperReport,是因爲經歷了GRID++報表開發的痛苦(尤其是IE兼容性問題極其嚴重)、不順手。

二、eclipse集成

    TIBCO Jaspersoft StudioJasperReports庫JasperReports服務器的基於Eclipse的報表設計器;雖然,它挺好的;只是,開發人員已經習慣了現有電腦的eclipse(或idea),爲了開發效率,它可以作爲Eclipse插件使用(主要原因是我喜歡eclipse DevStyle主題 ^_^)。

eclipse > Help > Eclipse Marketplace

三、主界面和報表設計視圖

學習參考:https://blog.csdn.net/deniro_li/article/details/73610105

  • 編輯器
頁籤 說明
Design 可視化的報表設計區域。
Source 報表對應的 JRXML 源代碼。
Preview 預覽報表設計的效果。
  • 輔助視圖
視圖 說明
Repository Explorer 維護報表的數據來源。
Project Explorer 維護項目目錄(當前的 workspace 下)。
Outline 本張報表的結構,在預覽模式下,爲空。
Properties 查看或者編輯某個報表元素的屬性,可以打開多個元素的屬性視圖。
Problems 展示問題或者錯誤。
Report state summary 報表執行控制檯、錯誤日誌、統計信息。
  • Design

    我們一般在 Design 頁籤中設計報表。報表分爲幾個不同的水平分割部分,它們都被叫做欄(Band),可以把這些報表元素放在這些欄中。每一個欄根據它們的特性,可能會被重複多次。比如 頁頭(page header)在每一頁都會被重複一次,而 detail band 中的內容,在每一條記錄中都會被重複一次。

    因爲佈局是可視化的,所以幾乎可以忽略它們底層的源代碼(JRXML)。

    Design 頁籤預先定義了 9 個欄。一個欄的寬度與頁面的寬度相同(不包括左右外邊距)。一般來說,欄 的高度會自動適配實際內容,但有的欄是固定的,比如 Column footer、page footer 以及最後一頁的 last page footer 的欄。

下面是欄的類型:

Band 名稱 說明
Title 標題。它只會出現一次,可以被打印在一個獨立的頁中做封面(這種情況下,這個欄的高度不會被計算到所有欄的總高度中)。
Page Header 頁頭。它會出現在所有的被打印的頁面中(如果 Tile 和 Summary 被打印在獨立頁中的話,那麼就不會打印頁頭)。
Column Header 每一頁的數據頂部欄。一般放數據表中的列名。
Group Header 分組的頂部欄。可選或者可以有多個。一般與 Group footer 配合使用。可以設置它的最小高度,但如果它的實際高度超過了這個最小值,那麼它就會被打印到新頁上,這一點一定要注意!
Group Footer 分組的底部欄。
Column Footer 每一頁的數據底部欄。
Page Footer 頁尾。
Last Page Footer 最後一頁的頁尾。可以通過它設計一個與其他頁的頁尾與衆不同的效果。如果它的高度被設置爲 0,那麼它將被完全忽略。
Summary 摘要欄。一般放置彙總的統計數據。
Background 背景。可以在這裏加水印。它可以被設置的最大高度是頁面的高度。
Detail 顯示數據,如:Fields變量
  • JasperReport列出以下可選的尺寸格式:
頁面格式 尺寸(像素) 頁面格式 尺寸(像素)
Letter 612x792 B0 2836x4008
Note 540x720 B1 2004x2836
Legal 612x1008 B2 1418x2004
A0 2380x3368 B3 1002x1418
A1 1684x3368 B4 709x1002
A2 1190x1684 B5 501x709
A3 842x1190 ARCH_E 2592x3456
A4 595x842 ARCH_D 1728x2593
A5 421x595 ARCH_C 1296x1728
A6 297x421 ARCH_B 864x1296
A7 210x297 ARCH_A 648x864
A8 148x210 FLSA 612x936
A9 105X148 FLSE 612x936
A10 74X105 HALFLETTER 396x612
11X17 792x1224 LEDGER 1224x792

 

 

四、報表元素

學習參考:https://blog.csdn.net/deniro_li/article/details/77850188

  • 基礎元素

五、spring boot 集成

    採用 spring-boot 1.5.14.RELEASE

			<dependency>
			    <groupId>com.itextpdf</groupId>
			    <artifactId>itext-asian</artifactId>
			    <version>5.2.0</version>
			</dependency>
			<dependency>
			    <groupId>com.itextpdf</groupId>
			    <artifactId>itextpdf</artifactId>
			    <version>5.5.13</version>
			</dependency>			
			<dependency>
			    <groupId>net.sf.jasperreports</groupId>
			    <artifactId>jasperreports</artifactId>
			    <version>6.9.0</version>
			</dependency>
			<dependency>
			    <groupId>net.sf.jasperreports</groupId>
			    <artifactId>jasperreports-fonts</artifactId>
			    <version>6.9.0</version>
			</dependency>
			<dependency>
			    <groupId>net.sf.jasperreports</groupId>
			    <artifactId>jasperreports-functions</artifactId>
			    <version>6.9.0</version>
			</dependency>				
					

六、解決中文顯示

    網上有替換字體的、有更換 jar 包的,一一使用都不完美。後來發現了此文章(感謝他):http://www.itclj.com/blog/5a0b079d81c06e4103ef5129 ,使用之後真不錯!終於,解決了中文顯示的難題。

jasperreport 源碼

我使用的是:華文宋體;fonts.xml

<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
    <fontFamily name="華文宋體">
        <normal>fonts/STSONG.TTF</normal>
        <bold>fonts/STSONG.TTF</bold>
        <italic>fonts/STSONG.TTF</italic>
        <boldItalic>fonts/STSONG.TTF</boldItalic>
        <pdfEncoding>Identity-H</pdfEncoding>
        <pdfEmbedded>true</pdfEmbedded>
        <exportFonts>
            <export key="net.sf.jasperreports.html">'華文宋體', Arial, Helvetica, sans-serif</export>
            <export key="net.sf.jasperreports.xhtml">'華文宋體', Arial, Helvetica, sans-serif</export>
        </exportFonts>
    </fontFamily>
</fontFamilies>

jasperreports_extension.properties

net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.lobstertwo=fonts/fonts.xml

STSONG.TTF  字體下載,可以去 WIN10 控制面板 COPY。

 

預覽效果:

 

七、參考文獻

 

八、下期預告

  • map填充報表;javaBean填充報表
  • 展示分組報表
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章