簡介
iReport 是為JasperReports Library和JasperReports Server設計的報表可視化設計器。
iReport是一個能夠創建復雜報表的開源項目。它100%使用Java語言編寫。是目前全球最為流行的開源報表設計器。
由于它豐富的圖形界面,你能夠很快的創建出任何一種你想要的報表。
用于打印的數據可以通過多種方式獲取包括:JDBC, TableModels, JavaBeans, XML,Hibernate(支持HQL查詢語言), CSV等。
它支持多種輸出格式包括:PDF,RTF,XML,XLS,CSV,HTM。
安裝環境
本教程環境如下,如版本不同出現與本文內容不合情況請自行百度~
版本
iReport:版本5.0.0
JDK環境:版本1.6,全名:jdk1.6.0_45,即下載jdk-6u45-windows-x64.exe
注意事項
需要本機/虛擬機的JDK環境變量設置為JDK1.6才能運行iReport,環境變量怎么設置應該不必多說了吧,忘了的可以看我這篇博文:win7/win10下的jdk的安裝和環境變量的配置
環境變量配置好后如果還是打不開iReport,請重新啟動電腦
樓主不才,如有錯誤之處,請評論必虛心改之
百度云下載地址
鏈接: https://pan.baidu.com/s/140AioMEZi6N4cedYXl4sjw
提取碼: yujq
失效請聯系樓主
基本操作
新建
1.左上角文件――》new
- 一般選擇A4紙張,而且是豎的A4,根據實際情況選擇其他類型紙張大小
- 再選擇 Open this Template 打開此模板
2.對模板進行命名
- Repoet name:模板名
- Location:文件存放地址
- File:模板文件全路徑(Location\Repoet name.jrxml)
- 下一步
3.finish完成新建
頁面布局
1.打開模板可以看到這樣的視圖
- 紅框標出來的是頁邊距,和word中的頁邊距一樣,是內容與紙張的距離
- Title:標題,僅在第一頁顯示一次
- Page Header:頁眉,每頁出現,可用于放頁碼,創建人等信息,值可變
- Column Header:列頭部信息,每頁出現,一般不用
- Detail:內容信息(使用重點),可添加多個Detail,控件基本上放在Detail中,它會自動根據體內的內容大小進行擴展、分頁
- Column Footer:列底部信息,每頁出現,一般用于統計列數據。
- Page Footer:頁腳,每頁出現,可用于放頁碼,創建人等信息,值可變
- Last Page Footer:最終頁腳,最后一頁顯示,一般用于顯示編制人等信息
- Summary:總結,最后一頁顯示,一般用于顯示所有頁面的統計
2.刪除和添加頁面布局
- 可以看到上方所解釋的布局在此處都有其顯示,灰色的代表這個布局不啟用
- 刪除布局:右鍵點擊一個啟用的布局――》Delete Band
- 添加布局:右鍵點擊一個可以添加的布局(一般添加Detail)――》Add Another
- Detail Band啟用布局:右鍵點擊一個未啟用的布局――》Add Band
style樣式
和前端的css一樣,為了樣式復用,減少繁瑣的樣式操作,每個樣式都可以繼承另一個樣式,繼承的樣式沒有本身樣式的優先級高
中文支持必備
右鍵點擊Styles――》添加一個style名為china
- pdf font name:STSong-Light
- Pdf Embedded:√
- pdf Encoding:UniGB-UCS2-H
- default style:√
比較常用的屬性
- Padding and borders:設置內邊距和邊框
- Font name:字體
- Size:字體大小
- Horizontal Alignment:水平方向所處位置
- Vertical Alignment:垂直方向所處位置
- Line Spacing:行距
- Blank when null:勾選后如果傳入的數據是空的,不會顯示null,而是空白
基礎控件
右上角有控件列表,使用只需要拖進布局視圖即可
Break:分頁符
其中的Page Break 表示在此之下建立一個新的分頁,相當于word的分頁符
舉例:
在第二頁1前放一個分頁符:
查看預覽效果:
分頁符后就是這一頁的結束,分頁優先級高于detail自動分頁
Ellipse、Round Rectangle、Line、Rectangle:圖形
四個圖形控件:
- Ellipse:橢圓
- Round Rectangle:圓角方形
- Line:橫線
- Rectangle:方形
都可組合其他控件,但操作過復雜,不推薦
示例:
Static Text:靜態文本
靜態文本,不具備自擴展能力,意思是框子有多大,顯示的內容就多大,多余的內容不顯示
示例:
預覽:
Text Field:文本域
文本域
- 具備自擴展能力,不管框子多大,都會完整顯示
- 具備使用數據參數能力,使用方法:$F{導入的字段名}
文本域寫法:
點擊屬性中的Text Field Experssion可對文本域進行編輯
字符串需要放到""中
- 字符串需要放到""中
- 可使用加號(+),進行字符串拼接
- 調用Paramters:$P{參數名}
- 調用Fields:$F{數據庫字段名}
- 調用Variables:$V{變量名}
- 可使用基礎運算,如三元運算
使用自擴展,需改變兩個屬性:
示例:
預覽:
Image:圖片
圖片,可選本地文件或者網絡URL,一般使用網絡URL
示例:
- Image Expression:就像文本域一樣使用,可從數據庫拿數據填充,放入圖片URL
- Scale Image:選擇Real size或者Real height會保持原圖的比例,選擇Retain Shape會隨著圖片框的大小改變圖片的大小
- Using Cache:啟用圖片緩存,可以看到URl內的圖片樣子
預覽:
Barcode:條形碼
條形碼,一般選取Code128條形碼
- Code Expression:就像文本域一樣使用,可從數據庫拿數據填充,放入條形碼內容
- Orientation:條形碼方向,none就是正方向,left就是把條形碼順時針轉90°,以此類推
- Text Position:條形碼內容顯示,Bottom就是在條形碼下方顯示,None就是不顯示
- Module Width:條形碼的長度,是以倍數增加的長度
示例:
table 和 subreport之后介紹
連接數據庫-使用table與subreport
導入驅動
1.尋找驅動
以導入Oracle驅動為例,Mysql驅動iReport已存在
首先去能連入生產數據庫的項目看看,用的是哪個版本的驅動,然后從Maven倉庫中找到Oracle驅動的jar包
比如我這個版本的Oracle驅動
懶的找的童鞋去maven官網下個jar包:https://mvnrepository.com/artifact/com.oracle/ojdbc6/11.2.0.3
2.放入bin
把驅動包放到iReport的安裝目錄\iReport-5.0.0\bin下
3.點擊左上角的工具――》選項――》Classpath――》Add JAR
4.找到剛剛放入bin的驅動包添加進去,確定,驅動添加完成
創建連接
1.點擊此圖標
2.點擊new――》Database JDBC connection
3.選擇剛剛導入的oracle驅動,URL、用戶名、密碼自行填寫
4.點擊Test,連接成功則Save,失敗則是某個環節出問題了
5.選擇此連接,創建連接成功
編輯sql語句
有了連接,我們就需要查詢數據庫的sql語句了,這里分為主查詢和子查詢,都可要參數可不要參數
主查詢
1.點擊上方的按鈕
2.添加sql
我連接的是本地oracle,查的表是一張測試用戶表
可以點擊 Read Fields 查看查詢到的字段
這個sql是個全查sql且沒有條件,我們給它加一個name條件
3.添加條件和其參數
name是String類型的,新建的參數也需要此類型
點擊ok,完成一個帶條件的主查詢sql語句
4.測試主查詢
主查詢一般用于整體布局中的參數填入,也就是可以把剛剛查出來的那幾個字段的值插入到我們設計的頁面中
可以從Fields看到可以選擇的字段名
用Text Field來插入字段值
預覽:
因為需要傳入參數,所以預覽需要一個name的條件參數值
輸入參數后,可得到預覽頁面
子查詢(較難)
很多時候并不是一個主查詢的一個sql語句就能查到所有想要的數值,那么可以新建多個子查詢
子查詢同樣可以通過條件參數來查詢,可以新建一個條件參數,也可以使用主查詢同名的條件參數
1.新建一個dataset
一般是單數據源,所以選擇創建空的dataset
2.設置sql
還是熟悉的界面,還是熟悉的操作,傳入的參數名取和主查詢一樣的名字――name,這樣只需要輸入一次name的值子查詢也可查詢完畢
特別注意的是,記得給字段取別名,不要都叫一樣的名字,不僅自己容易混淆,程序也容易出錯
3.使用子查詢――table
例子中的主查詢返回值只有0個或1個對象,而子查詢可以返回多個對象(列表),這時候可以使用table了
拖一個table到一個單獨的detail中,這樣detail會自適應table
選擇table所用的dataset,剛剛的創建t1
選擇需要顯示的字段,一般全選
選擇連接的數據源,一般是一個數據源,也就是創建連接中的那個數據源
如果是第一次創建table,勾上這個,會為表頭\表尾、表列頭\表列尾、表邊框、表內容各創建一個style
表介紹
Table Header\Table Footer:表頭\表尾Column Header\Column Footer:表列頭\表列尾Detail:表內容
style介紹
table:表整體(相當于圍了一圈邊框)table_TH:表頭\表尾(第一行/最后一行)table_CH:表列頭\表列尾(第二行/倒二行)table_TD:表內容(除此之外的行)
最終是這樣展現的
終極丑有木有?明明只想要最原始的表格就好了,太花花綠綠了
刪除除了有字段的所有其他行
將Table、Column Header、嵌入的Text Field、Static Text的樣式全部選擇為table_TD,再拉長Text Field、Static Text占據列長
此時表就創建好了,這個表是根據子查詢dataset t1的數據來填入信息的,t1是需要傳入一個參數的,這個參數的值我們需要去指定,右鍵Table――》Edit Table datasource
t1子查詢需要一個name參數的值,這個值可以從輸入參數(如 P N A M E ) 取 , 也 可 以 自 己 去 設 定 ( 如 " c i c h e n g " ) , 還 可 以 從 主 查 詢 的 字 段 值 中 取 ( 如 P{NAME})取,也可以自己去設定(如"cicheng"),還可以從主查詢的字段值中取(如 PNAME)取,也可以自己去設定(如"cicheng"),還可以從主查詢的字段值中取(如F{NAME})
布局:
預覽:
表格這個屬性記得改成這個:
可以達到沒數據也可以有表頭的效果
子模板subreport
相當于再新建了一個模板,但主模板包含這個子模板
子模板本身也具備所有主模板的特性,擁有主查詢和子查詢,層層套娃
示例暫且先鴿了,因為以上內容足以完成模板的布局與樣式,之后會繼續更新~
本人原創內容,如需轉載,請聯系一下我~
到此這篇關于非常全面的IReport的使用的文章就介紹到這了,更多相關IReport使用內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/qq_42495847/article/details/109264363