Jasperreports+jaspersoft studio学习教程(十)- 多数据源的Chart图表

 

本篇介绍Chart图表。注入多数据源(学会使用DataSet)

 

10.1 设计报表模板

10.1.1 新建模板demo14.jrxml,只保留Title、Detail。新建两个Parameters:userList(java.util.List)、employeeList(java.util.List)。

 

Jasperreports+jaspersoft studio学习教程(十)- 多数据源的Chart图表

 

 

10.1.2 新建两个空Dataset:Dataset1、Dataset2。模板右键 -> Create Dataset。

 

Jasperreports+jaspersoft studio学习教程(十)- 多数据源的Chart图表

 

 

10.1.3 在Dataset中新建Fields如图:

 

Jasperreports+jaspersoft studio学习教程(十)- 多数据源的Chart图表

 

 

10.1.4 在组件面板中拖动 Chart组件到Detail Band中,跳出Chart Wizard窗口,选中饼状图。

 

Jasperreports+jaspersoft studio学习教程(十)- 多数据源的Chart图表

 

 

10.1.5 Next后,Dataset选中 Dataset1,Use a JRDatasource expression 。

 

Jasperreports+jaspersoft studio学习教程(十)- 多数据源的Chart图表

 

 

在Exception Editor写值为

newnet.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{userList})

 

Jasperreports+jaspersoft studio学习教程(十)- 多数据源的Chart图表

 

 

10.1.6 添加一个 Series,选中$F{userName},即设定key为  $F{userName}。

 

Jasperreports+jaspersoft studio学习教程(十)- 多数据源的Chart图表

 

 

设定 value的值为 $F{age},Label需要String类型的值。Finish完成

Jasperreports+jaspersoft studio学习教程(十)- 多数据源的Chart图表

 

 

10.1.7 显示 饼图的Properties.选中 Chart,设置图表Title

 

Jasperreports+jaspersoft studio学习教程(十)- 多数据源的Chart图表

 

 

10.1.8 选中 Chart Plot ,设置 show Label

 

Jasperreports+jaspersoft studio学习教程(十)- 多数据源的Chart图表

 

 

饼图表完成。

 

10.1.9 拖动一个柱状图到 Detail Band中。添加两个Series对象

 

Jasperreports+jaspersoft studio学习教程(十)- 多数据源的Chart图表

 

 

10.1.10 设置Dataset 为 Dataset2,且Exception Editor写值为newnet.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{employeeList})

 

Jasperreports+jaspersoft studio学习教程(十)- 多数据源的Chart图表

 

 

10.1.11 选中Series 为 “工龄(年)”,设置key和Value如图:

 

Jasperreports+jaspersoft studio学习教程(十)- 多数据源的Chart图表

 

 

10.1.12 选中 Series 为 “月薪(K)”,设置key和Value如图:

 

Jasperreports+jaspersoft studio学习教程(十)- 多数据源的Chart图表

 

10.1.13 设置柱状图的标题

 

Jasperreports+jaspersoft studio学习教程(十)- 多数据源的Chart图表

 

 

10.1.14 设置show Label 

 

Jasperreports+jaspersoft studio学习教程(十)- 多数据源的Chart图表

 

 

设置 Category Axis

 

Jasperreports+jaspersoft studio学习教程(十)- 多数据源的Chart图表

 

设置 Value Axis

 

Jasperreports+jaspersoft studio学习教程(十)- 多数据源的Chart图表

 

 

设置 Item Label

Jasperreports+jaspersoft studio学习教程(十)- 多数据源的Chart图表

 

柱状图完成。设计模板如下:

Jasperreports+jaspersoft studio学习教程(十)- 多数据源的Chart图表

 

 

保存后拷贝到项目中。

 

10.2 编写代码注入数据源

使用图表需要加jfreechart的jar包

 

Jasperreports+jaspersoft studio学习教程(十)- 多数据源的Chart图表

 

 

10.2.1 新建 Employee类

 
  1. public class Employee {

  2.  
  3. private Integer id;

  4.  
  5. private String empName;

  6.  
  7. private Integer workingYears;

  8.  
  9. private Double monthlySalary;

  10.  
  11. //get、set方法省略

  12.  
  13. }

 

10.2.2 新建Servlet ,doGet如下:

 

 

 
  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/demo14.jrxml";

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

  7. String jasperPath = request.getServletContext().getRealPath("/")+"/jasper/demo14.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> userlist = new ArrayList<User>();

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

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

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

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

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

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

  26. userlist.add(user1);

  27. userlist.add(user2);

  28. userlist.add(user3);

  29. userlist.add(user4);

  30. userlist.add(user5);

  31. userlist.add(user6);

  32.  
  33. List<Employee> emplist = new ArrayList<Employee>();

  34. Employee emp1 = new Employee(1,"小宇",3,8.0);

  35. Employee emp2 = new Employee(2,"小方",2,6.5);

  36. Employee emp3 = new Employee(3,"小志",5,15.0);

  37. Employee emp4 = new Employee(4,"小刚",6,15.0);

  38. Employee emp5 = new Employee(5,"小希",8,20.0);

  39. Employee emp6 = new Employee(6,"小文",10,18.0);

  40. emplist.add(emp1);

  41. emplist.add(emp2);

  42. emplist.add(emp3);

  43. emplist.add(emp4);

  44. emplist.add(emp5);

  45. emplist.add(emp6);

  46.  
  47. parameters.put("userList", userlist);

  48. parameters.put("employeeList", emplist);

  49.  
  50. JasperRunManager.runReportToPdfStream(isRef, sosRef, parameters, new JREmptyDataSource());

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

  52. } catch (JRException e) {

  53.  
  54. e.printStackTrace();

  55. }finally {

  56. sosRef.flush();

  57. sosRef.close();

  58. }

  59. }


10.2.3 启动tomcat,并访问servlet如下:

 

 

Jasperreports+jaspersoft studio学习教程(十)- 多数据源的Chart图表