Jasperreports+jaspersoft studio學習教程(二)- 使用Parameters屬性傳入Map數據源填充報表

原文鏈接:https://blog.csdn.net/shiyun123zw/article/details/79166448

2.1 設計報表模板

2.1.1 在Studio中新建一個報表模板(DemoReport2),刪除不需要的Band,Column Header,ColumnFooter,Summary,Background,在outline界面中選中要刪除Band右鍵-> delete,即可刪除。




2.1.2 在outline面板中找到Parameters,右鍵 -> Create Parameter,新建一個Parameter(生成一個Paramerter1)




 2.1.3 右鍵 Paramete1 -> Show Properties. 設置Name爲title、Class爲java.lang.String.




用同樣的方法生成,date,name,age,dept,gender的parameter項,屬性全爲java.lang.String



2.1.4 利用組件面板(Palette)中的組件設計模板。

選取Static Text組件拖動到Detail Band中,寫入“NAME:”,可以設置字體,大小。




點擊 “NAME”顯示Properties.在Appearance中可以設置組件的寬高,和組件在模板上的位置。



在Properties.的Borders中可以設置組件的邊框:




將 outline面板中Parameters下的name,拖動到Detail 面板中,通過修改該組件的Properties屬性,設置位置和大小,設置邊框。




2.1.5 通過以上步驟,設計其他parameter屬性,設計報表模板如下:




2.1.6 保存模板,並Preview




結果如圖:



2.2 通過Java程序,使用Map作爲數據源生成報表


2.2.1 新建web項目,在下載的jasperreport包的\jasperreports-6.4.1\dist目錄下,找到三個jar包引入到項目中。





2.2.2 新建servlet,(這裏爲JasperServlet),doGet內容如下:

  1. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  2. //map作爲報表數據源
  3. Map<String,Object> parameters = new HashMap<String,Object>(16);
  4. parameters.put("title", "THIS IS TITLE");
  5. parameters.put("date", new SimpleDateFormat("yyyy-mm-dd").format(new Date()));
  6. parameters.put("name", "小明");
  7. parameters.put("age", "18");
  8. parameters.put("dept", "開發部");
  9. parameters.put("gender", "男");
  10. //引入jasper文件。由JRXML模板編譯生成的二進制文件,用於代碼填充數據
  11. String jasperPath = request.getServletContext().getRealPath("/")+"/jasper/DemoReport2.jasper";
  12. FileInputStream isRef = new FileInputStream(new File(jasperPath));
  13. ServletOutputStream sosRef = response.getOutputStream();
  14. try {
  15. JasperRunManager.runReportToPdfStream(isRef, sosRef, parameters, new JREmptyDataSource());
  16. response.setContentType("application/pdf");
  17. } catch (JRException e) {
  18. e.printStackTrace();
  19. }finally {
  20. sosRef.flush();
  21. sosRef.close();
  22. }
  23. }


在這裏可以發現,parametes作爲數據源在程序中是一個Map集合。對應模板中Paramters,並且map的key與模板中Parameters屬性的名字一致,map的value的數據類型與模板Parameters屬性設置的數據類型保持一致。所以,在設計模板時要注意,Parameters命名不能重複,且設置數據類型時也要留心。

.jsaper文件:由JRXML模板編譯生成的二進制文件,用於代碼填充數據

在studio中找到.jrxml文件右鍵 -> Compile Report ,即可生成.Jasper文件,

將生成的DemoReport2.jasper文件放入WebRoot下新建的jasper文件夾中。


2.2.3 報表的生成流程




2.2.4 將web工程放入tomcat中,啓動並訪問。




訪問成功了,但是中文卻並未顯示。下一篇解決打印pdf中文不顯示問題。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章