天天看點

(二)Hello world JasperReport

一、前言

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

二、eclipse內建

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

eclipse > Help > Eclipse Marketplace

(二)Hello world JasperReport

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

學習參考: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

  • 基礎元素
(二)Hello world JasperReport

五、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 ,使用之後真不錯!終于,解決了中文顯示的難題。

(二)Hello world JasperReport

jasperreport 源碼

(二)Hello world 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。

預覽效果:

(二)Hello world JasperReport

七、參考文獻

  • http://www.itclj.com/blog/5a0b079d81c06e4103ef5129
  • https://blog.csdn.net/SHIYUN123zw/column/info/31009
  • https://community.jaspersoft.com/documentation/tibco-jaspersoft-studio-user-guide/v750/getting-started-jaspersoft-studio
  • http://www.bubuko.com/infodetail-2492974.html

八、下期預告

  • map填充報表;javaBean填充報表
  • 展示分組報表