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,并访问。