Jasperreports+jaspersoft studio学习教程(六)- 分组显示数据

 

 

 接着上一篇的内容来看报表分组显示数据

 

 

 

6.1 设计报表模板(在DemoReport4.jrxml上修改)

 

 

 

6.1.1 模板右键 -> Create Group ,跳出Group Band的页面,命名并选中分组方式

 

Jasperreports+jaspersoft studio学习教程(六)- 分组显示数据

 

 

点击Next ,只勾选 Group Header。

 

Jasperreports+jaspersoft studio学习教程(六)- 分组显示数据

 

 

然后Finish。完成后模板中多出 Group2 Group Header1 的Band

 

Jasperreports+jaspersoft studio学习教程(六)- 分组显示数据

 

 

6.1.2 将deptId 拖入 Group Header中 ,会跳出 TextField Wizard框,选中 NoCalculation Function 。

 

Jasperreports+jaspersoft studio学习教程(六)- 分组显示数据

 

 

双击 $F{deptId} 会弹出Expression editor框

 

Jasperreports+jaspersoft studio学习教程(六)- 分组显示数据

 

 

 

设计报表模板如下:

 

 

Jasperreports+jaspersoft studio学习教程(六)- 分组显示数据

 

 

保存后,替换项目中的jrxml文件。

 

 

6.2 编写servlet注入数据源(在JasperServlet3上修改)

 

 

 
  1. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

  2.  
  3. Map<String,Object> parameters = new HashMap<String,Object>(16);

  4.  
  5. String jrxmlPath = request.getServletContext().getRealPath("/")+"/jrxml/DemoReport4.jrxml";

  6. //由jrxml文件编译后生产jasper文件的路径

  7. String jasperPath = request.getServletContext().getRealPath("/")+"/jasper/DemoReport4.jasper";

  8.  
  9. FileInputStream isRef = null;

  10. ServletOutputStream sosRef = null;

  11.  
  12. try {

  13. //编译jrxml生产jasper文件

  14. JasperCompileManager.compileReportToFile(jrxmlPath, jasperPath);

  15.  
  16. isRef = new FileInputStream(new File(jasperPath));

  17. sosRef = response.getOutputStream();

  18. //组装list数据源

  19. List<User> list = new ArrayList<User>();

  20. User user1 = new User(1,"小明",20,1);

  21. User user2 = new User(2,"小虎",20,1);

  22. User user3 = new User(3,"小风",20,2);

  23. User user4 = new User(4,"小东",20,2);

  24. User user5 = new User(5,"小南",20,3);

  25. User user6 = new User(6,"小翔",20,3);

  26. list.add(user1);

  27. list.add(user2);

  28. list.add(user3);

  29. list.add(user4);

  30. list.add(user5);

  31. list.add(user6);

  32.  
  33. //new JRBeanCollectionDataSource(list) 以javaBean为数据源注入报表数据

  34. JasperRunManager.runReportToPdfStream(isRef, sosRef, parameters, new JRBeanCollectionDataSource(list));

  35. response.setContentType("application/pdf");

  36. } catch (JRException e) {

  37.  
  38. e.printStackTrace();

  39. }finally {

  40. sosRef.flush();

  41. sosRef.close();

  42. }

  43. }

 

启动tomcat,并访问。

 

Jasperreports+jaspersoft studio学习教程(六)- 分组显示数据