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

 

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



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


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




点击Next ,只勾选 Group Header。




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




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




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





 

设计报表模板如下:





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



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


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		Map<String,Object> parameters = new HashMap<String,Object>(16);
		
		String jrxmlPath = request.getServletContext().getRealPath("/")+"/jrxml/DemoReport4.jrxml";
		//由jrxml文件编译后生产jasper文件的路径
		String jasperPath = request.getServletContext().getRealPath("/")+"/jasper/DemoReport4.jasper";
		
		FileInputStream isRef = null;
		ServletOutputStream sosRef = null;
		
		try {
			//编译jrxml生产jasper文件
			JasperCompileManager.compileReportToFile(jrxmlPath, jasperPath);
			
			isRef = new FileInputStream(new File(jasperPath));
			sosRef = response.getOutputStream();
			//组装list数据源
			List<User> list = new ArrayList<User>();
			User user1 = new User(1,"小明",20,1);
			User user2 = new User(2,"小虎",20,1);
			User user3 = new User(3,"小风",20,2);
			User user4 = new User(4,"小东",20,2);
			User user5 = new User(5,"小南",20,3);
			User user6 = new User(6,"小翔",20,3);
			list.add(user1);
			list.add(user2);
			list.add(user3);
			list.add(user4);
			list.add(user5);
			list.add(user6);
			
			//new JRBeanCollectionDataSource(list)  以javaBean为数据源注入报表数据
			JasperRunManager.runReportToPdfStream(isRef, sosRef, parameters, new JRBeanCollectionDataSource(list));
			response.setContentType("application/pdf");
		} catch (JRException e) {
			
			e.printStackTrace();
		}finally {
			sosRef.flush();
			sosRef.close();
		}
	}


启动tomcat,并访问。





  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值