iReport學習筆記(1)

iReport學習筆記

iReport學習筆記(1)

工作上還滿常需要用到iReport來製作一些報表,但都是在前人打好的基礎上再做增修,沒有自己從頭來一遍,總感覺對iReport的理解很有限,所以就藉這個機會在網路上找了一些教學來看,並開這一系列文章來紀錄自己學到了些什麼

下載、安裝與執行

下載連結

可以在這邊找到各個版本的下載連結,下載下來之後就照一般軟體的安裝方式安裝

執行環境

我的作業系統是Windows 10,安裝的版本是iReport 5.5.0(之後會提到為什麼不裝最新版),JDK安裝的是1.8,但是
iReport不支援1.8(開啟後會直接跳掉),所以要額外再安裝1.7
順帶一提我的資料庫用的是Oracle 11g XE

執行

因為系統的環境變數設的JAVA_HOME跟Path都是指向JDK 1.8的路徑,所以要告訴iReport我們的JDK 1.7裝在哪裡,打開安裝路徑\Jaspersoft\iReport-5.5.0\etc\ireport.conf,找到有一行

#jdkhome="/path/to/jdk" 

將其替代成

jdkhome="D:\jdk1.7.0_79"  // 填實際的安裝路徑

存檔後即可正常執行

資料庫連線及基本架構

設定資料庫連線

這塊我也搞了很久才搞定,明明已經照網路寫的方式把JDBC Driver放到所有能放的地方了,但之前用5.6.0版的時候老是說Classpath找不到Driver,後來看到這篇才發現到5.6.0版跟Windows 10不合,改裝5.5.0版就好了,不過這兩個版本都是2013~2014年推出的,以後如果有出更新的作業系統說不定會有更多問題...

首先準備好JDBC的Driver,如果是用MySQL應該就可以直接使用了,iReport裡有內建。對應到我使用的資料庫版本的Driver是ojdbc6.jar,網路上說有三個方式可以讓iReport吃到JDBC的Driver,不過我試了一輪只有一種方法可以用,不知道是怎麼回事...不過能用就好XD

從上方的menu找到工具→選項,選擇Classpath,點選Add JAR,選擇Driver擺放的地方,設定完成後如圖所示

接著點選Report Datasources的按鈕,在彈出的Connections/Datasources視窗中點選New

選擇Database JDBC connection後按Next

  • Name:可以隨便取一個
  • JDBC Driver:從下拉式選單選擇Oracle (oracle.jdbc.driver.OracleDriver),如果Driver有設定好,選項的字會是黑色的,沒設定好就是紅色的
  • JDBC URL:格式是jdbc:oracle:thin:@localhost:1521:DatabaseName,如果不知道DatabaseName要輸入什麼的話,可以找找oraclexe/app/oracle/product/11.2.0/server/network/ADMIN/tnsnames.ora這個檔案,在檔案中找到下面這段(其他版本的Oracle可能會不一樣,但主要是要看SERVICE_NAME的內容所以沒差)
XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = XXXXXX)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

將JDBC URL改為jdbc:oracle:thin:@localhost:1521:XE即可

  • Username/Password:連接資料庫的帳號密碼

設定好後先按一下Test,如果成功了就可以按Save了,到此資料庫設定結束,接著就來建立報表吧!

創立檔案

從上方的menu找到檔案→新增,隨便選一個模板,比如說選擇Blank A4 Landscape
選定模板後底下有兩個按鈕,如果點選「Open this Template」,只有設定檔名跟檔案位置就沒了,點選「Launch Report Wizard」則還會有資料庫的相關設定

檔名與檔案位置

下SQL指令

table中的欄位,可以用箭頭控制哪些要放入檔案中

如果有需要group by條件的話再設定這邊即可

創建完成後可以看到這樣的畫面

SQL指令如果有需要修改的話可以點紅框框起來的按鈕,在這介面中下SQL指令後可以選擇要把哪些欄位加入檔案中,也可以看資料庫中的資料

編輯檔案

接著就來在檔案中加入一些內容,可以看到畫面右方有一個名為「調色板」的區塊

裡面的元素都是可以直接拖到畫面上擺放的,首先按著「Static Text」(靜態的文字)拖到畫面上,並對其做編輯,我多弄了一些,就像下圖這樣

接著按著「Text Field」(變數相關的文字)拖到畫面上做編輯,或是從左邊Report Inspector中的Fields底下把要用的變數拖到畫面上也可以。整個編輯完調一下位置跟大小

點選Preview,基本的報表就出現了

報表架構

組成

報表被垂直分成多個部分,每個部分稱為Band,在使用上可以自由增加或刪除各個Band,以下針對每個Band做簡略的介紹

  • Title:標題,只會在整個檔案的第一頁最上方出現
  • Page Header:頁首,在檔案的每一頁上面都會出現,除了第一頁是在Title底下以外,其他頁面的頁首都會在最上面
  • Column Header:表頭,一般拿來放欄位名稱
  • Detail:報表的內容,實際要呈現的內容放在這邊
  • Column Footer:表尾
  • Page Footer:頁尾,最後一頁不會出現
  • Last Page Footer:最後一頁的頁尾,最後一頁才會出現
  • Summary:出現在報表最後一頁的Detail底下,可以放一些統計的東西

元素

報表中會出現的元素大概有以下幾種,每個元素基本上都有高度、寬度、位置等屬性,還有一些屬性是特有的。每個元素不能跨在多個Band中間,會發生例外錯誤

  • Line、Rectangle、Ellipse(線段、矩形、橢圓形等圖形)
  • Static Text、Text Field(文字類)
  • Image(圖像)
  • Subreport(子報表)
  • Crosstab
  • 比較特別的物件,如Chart、Barcode...等

以線段為例: