IReport與JasperReport開發詳解二

來源:互聯網
上載者:User
詳解  IReport與JasperReport開發詳解二        3.2.1  設計報表                現在請點擊菜單"DataSource"然後選取中"Report query"項,也可以點擊表徵圖 ,接著IReport會彈出一個對話方塊(如圖):現在我們在"Report SQL Query"中輸入SQL語句"select * from titles",然後去掉"Automatically Retrieve Fields"前面的鉤,再點擊"Read Fields"將表中的資料欄位讀出來如圖 點擊"OK"返回主介面。現在該設計報表的內容了,請點擊菜單"View"下的"Report Fields"項,也可以點擊工具列上的表徵圖,然後你將會得到表中所有的欄位名如圖:你可以選擇你想要的列,以拖動的方式,將先中的列拖到報表中,這樣IReport就會自動的將你所拖動的列進行綁定(可別告訴我你不會拖動這個動作,呵呵),在這裡我們只作簡單的演式,就不拖動太多的列到報表中,我們只選取取"title_id, pubdate,title"三列就可以了。當然你如果不想用這種簡單的方法,要手工添加那也沒辦法,同樣也可以你可以點擊工具列上的表徵圖,這時你的游標就會變為 一個十形,你可以在報表的任意位置畫一個 文字框出來,因為你在報表中畫的是一個動態文本列,這時你得設定它的屬性,你可以雙擊你剛才畫的文字框,也可以對著你所畫的文字框點擊右鍵,選"Properties"。來設定它的屬性。如圖:在預設情況下開啟屬性視窗後會自動的轉到"Text Field"選項卡上,這時你得設定一個與資料庫相對應的資料類型, 這個不能出錯,否則會在你編譯或產生報表時出錯(未作測試,不能確定會在那一步出現錯誤),還有一個我們必須關注的是"TextField expression",在它的輸入框中預設為"$F{field}"這時你須要將大括弧中的"Field"改 為你表中要指定的列名。如果你要問"$F"代表什麼,那你就看下面的這個表就應該知道了。設定好這兩個後就可以綁定一個列的資料了。 不過你必須將它放在"detail"區中,否則你在運行報表時可能只能顯示一條記錄到報表中。為什麼這就不用解譯了吧!整個報表的空頁面 IReport已為你劃分好了資料擺放的位置,比如:"title,pageHeader,columnHeader"等等。 元素 名稱 引用 變數 variablesName $V{ variablesName } 參數 parameterName $P{ parameterName } 欄位 filedsName $F{ filedsName }         現在運行報表總覺得有點單調,我們可以為報表設定一些標題之類的資訊,在工具列中找到,點擊它然後在"Title”區畫一個文字框,雙擊它或點右鍵選"Properties" 這時出現一個靜態文字框的屬性視窗,選中"Static Text“選項卡,輸入”測試報表“,可以在"Font" 選項卡中選擇你希望看到的字型和字型大小,如圖 在這裡你也可以不用輸入,也可以從資料庫中取資料來填充它,具全在"common"選項卡,點擊後,你會看到"Print When expression"在它的輸入框中輸入你所想要的列名,具體操作如上,也要以從右邊的三尖角表徵圖 進去,有四個類型"Fields,Parameters,Variables,Formulas"這裡只介紹前兩種,"Fields"在前面已經說過了,具體操作是一樣的,就不再細說,第二種"Parameter"這個參數一般不在IReport中使用,後面再講。然後按照設定"title"的方式來設定"ColumnName“,做好後你所看到的中文顯示不出來,或亂碼,怎麼辦呢?你可以見頁底的 FAQ ,現在一個最基本的報表可以認為已經做好了,但是還得調整它的位置,以及上下的邊界線,要不然資料顯示到頁面時會非常的零散。    現在儲存,記得最好儲存為與你建立報表時的名字一樣。理由:“因為在使用檔案流來讀取報表,然後編譯時間會出現錯誤。儲存完後點擊工具列上的表徵圖 進行編譯,在工具列上有兩個表徵圖一個是執行靜態報表用的,而另一個是用來填充動態報表的 ,現在我們只能用動態報表執行的按鈕,來填充報表,用前者來執行的話除了你的靜態文本之外,其它的顯示null。IReport在預設情況下為"JRViewer Preview" ,產生後的效果為:        你也可以在 "Build" 菜單中選擇你想要得到的報表格式,如:PDF,XSL,CSV,HTML等...當你選擇好後如果沒有指定運行你指定產生報表的運行程式的話,它預設會儲存到IReport的目前的目錄中,不會是在你儲存報表所在目錄。如果你不喜歡看英文介面的話,你可以在菜單"Tools"下的"Options..."可以設定語言,報表的儲存位置,備份位置,運行報表所用的程式等等... ... 未完待續  FAQ        1.產生報表時中文產生亂碼?             JasperReport的中文處理,須要一個亞洲語言套件" iTextAsian.jar,"話到IReport下的lib目錄中;然後修改報告的"PDF Font Name"將其改為"STSong-Light",再則是修改"PDF Embedded PDF Encoding" 將其改為"UniGB-UCS2-H(Chinese Simplified)" ,這樣就可以解決JasperReport的中文問題了(針對PDF設定的,對Excel也許要少一些,不過這樣設定同樣也能顯示為中文,是不愛引響的)。        2.報表編譯時間產生NoClassDefFoundException異常?             在代碼處理JasperReport時出現該異常,是因為在引用JasperReport的一些jar檔案不完整,因工作忙我的處理方式是將JasperReport目錄下的Demo ample\webapp\WEB-INF\lib\所有的jar檔案,全引用了,以防不測,同時也沒有時間去過多的深究。一定會有一些不必要的包被引用了,如果你有時間可以看一下,再將不必要的jar去掉。        3.另存新檔PDF時出現UnisupportEncodingException異常?             在報表設計的過程中難免會有小錯誤,這是因為沒有改變"PDF Font Name"應改為"STSong-Light".  下載相關:        IReport下載地址:http://ireport.sourceforge.net        JasperReport下載地址:http://jasperreports.sourceforge.net        iText亞洲語言套件下載地址:http://www.lowagie.com/iText

相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。