這兩天做了一些JasperReport的報表,由於之前沒有接觸過,所以做的過程中出現了一些問題:
1.在ireport中設計好的報表,編譯運行都是正常的,但是將.jasper文件加入到web工程中確一直顯示一個空的頁面。
一開始以爲是代碼的問題,仔細檢查並改了很多都沒有解決。絞盡腦汁之後將思路改到報表設計本身的問題上,重新審視報表設計的細節發現,在報表的屬性中發現了了一個屬性設置"when no data",值爲"no pages",這下豁然開朗,八成問題在此。因爲我的報表不需要記錄集,只需要傳幾個參數顯示即可。將該屬性的值改爲“all sections, no detail”,並將報表的內容寫在pageHeader裏面這個問題就自然的解決了。
2.在報表顯示出來後,發現有很多的圖片都顯示不出來。
原因是JasperReport顯示線條等的圖片是通過調用其ImageServlet來實現的,所以查看例子代碼找到web.xml文件,複製以下的Servlet定義片段到自己的工程的web.xml中。Servlet是定義好了,但是還需要告訴JasperReport如何找到Servlet,這樣就需要將例子代碼中的exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "./servlets/image?image="); 片段複製到自己的程序中。並且需要的話還要適當的修改後面的鏈接。
<servlet-name>ImageServlet</servlet-name>
<servlet-class>
net.sf.jasperreports.j2ee.servlets.ImageServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ImageServlet</servlet-name>
<url-pattern>/servlets/image</url-pattern>
</servlet-mapping>
<mime-mapping>
3.中文顯示都是問號。
在調用
exporter.exportReport();
之前加上
response.setContentType("text/html;charset=UTF-8");
即可。
4.當線條有交差時部分顯示不出來,如橫線和豎線交差時,有時橫線不顯示,有時豎線不顯示。
這是因爲JasperReport劃線也是通過圖片顯示的,當線條交差時總會導致後畫的線條區域覆蓋了前面的線條,導致畫不出來。唯一的解決方法是不要讓線條交差。這樣就會產生線條之間會出現脫節的現象,但是這也沒有辦法,總比沒有好吧。:)