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中文不显示问题。