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.2 新建servlet,(這裏爲JasperServlet),doGet內容如下:
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-
- //map作爲報表數據源
- Map<String,Object> parameters = new HashMap<String,Object>(16);
- parameters.put("title", "THIS IS TITLE");
- parameters.put("date", new SimpleDateFormat("yyyy-mm-dd").format(new Date()));
- parameters.put("name", "小明");
- parameters.put("age", "18");
- parameters.put("dept", "開發部");
- parameters.put("gender", "男");
-
- //引入jasper文件。由JRXML模板編譯生成的二進制文件,用於代碼填充數據
- String jasperPath = request.getServletContext().getRealPath("/")+"/jasper/DemoReport2.jasper";
- FileInputStream isRef = new FileInputStream(new File(jasperPath));
- ServletOutputStream sosRef = response.getOutputStream();
-
- try {
- JasperRunManager.runReportToPdfStream(isRef, sosRef, parameters, new JREmptyDataSource());
- response.setContentType("application/pdf");
- } catch (JRException e) {
-
- e.printStackTrace();
- }finally {
- sosRef.flush();
- sosRef.close();
- }
- }
在這裏可以發現,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中文不顯示問題。