Jasperreports+jaspersoft studio学习教程(二)- 使用Parameters属性传入Map数据源填充报表

原文链接:https://blog.csdn.net/shiyun123zw/article/details/79166448

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.1 新建web项目,在下载的jasperreport包的\jasperreports-6.4.1\dist目录下,找到三个jar包引入到项目中。





2.2.2 新建servlet,(这里为JasperServlet),doGet内容如下:

  1. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  2. //map作为报表数据源
  3. Map<String,Object> parameters = new HashMap<String,Object>(16);
  4. parameters.put("title", "THIS IS TITLE");
  5. parameters.put("date", new SimpleDateFormat("yyyy-mm-dd").format(new Date()));
  6. parameters.put("name", "小明");
  7. parameters.put("age", "18");
  8. parameters.put("dept", "开发部");
  9. parameters.put("gender", "男");
  10. //引入jasper文件。由JRXML模板编译生成的二进制文件,用于代码填充数据
  11. String jasperPath = request.getServletContext().getRealPath("/")+"/jasper/DemoReport2.jasper";
  12. FileInputStream isRef = new FileInputStream(new File(jasperPath));
  13. ServletOutputStream sosRef = response.getOutputStream();
  14. try {
  15. JasperRunManager.runReportToPdfStream(isRef, sosRef, parameters, new JREmptyDataSource());
  16. response.setContentType("application/pdf");
  17. } catch (JRException e) {
  18. e.printStackTrace();
  19. }finally {
  20. sosRef.flush();
  21. sosRef.close();
  22. }
  23. }


在这里可以发现,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中文不显示问题。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章