一、前言
在工作中,尤其是傳統企業中,面不了會用到報表(包含圖表,子報表,交叉表等的複雜布局)展示資料。學習JasperReport,是因為經曆了GRID++報表開發的痛苦(尤其是IE相容性問題極其嚴重)、不順手。
二、eclipse內建
TIBCO Jaspersoft Studio是JasperReports庫和JasperReports伺服器的基于Eclipse的報表設計器;雖然,它挺好的;隻是,開發人員已經習慣了現有電腦的eclipse(或idea),為了開發效率,它可以作為Eclipse插件使用(主要原因是我喜歡eclipse DevStyle主題 ^_^)。
eclipse > Help > Eclipse Marketplace
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLycGVPhHOWFGba1mYox2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL4kDO5UDO0cTM3EDNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
三、主界面和報表設計視圖
學習參考: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。
預覽效果:
七、參考文獻
- 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填充報表
- 展示分組報表