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

2.1 设计报表模板

2.1.1 在Studio中新建一个报表模板(DemoReport2),删除不需要的Band,Column Header,ColumnFooter,Summary,Background,在outline界面中选中要删除Band右键-> delete,即可删除。

image.png

2.1.2 在outline面板中找到Parameters,右键 -> Create Parameter,新建一个Parameter(生成一个Paramerter1)

image.png

2.1.3 右键 Paramete1 -> Show Properties. 设置Name为title、Class为java.lang.String.

image.png

用同样的方法生成,date,name,age,dept,gender的parameter项,属性全为java.lang.String

image.png

2.1.4 利用组件面板(Palette)中的组件设计模板。

选取Static Text组件拖动到Detail Band中,写入“NAME:”,可以设置字体,大小。

image.png

点击 “NAME”显示Properties.在Appearance中可以设置组件的宽高,和组件在模板上的位置。

image.png

在Properties.的Borders中可以设置组件的边框:

image.png

将 outline面板中Parameters下的name,拖动到Detail 面板中,通过修改该组件的Properties属性,设置位置和大小,设置边框。

image.png

2.1.5 通过以上步骤,设计其他parameter属性,设计报表模板如下:

image.png

2.1.6 保存模板,并Preview

image.png

结果如图:


image.png

2.2 通过Java程序,使用Map作为数据源生成报表

2.2.1 新建web项目,在下载的jasperreport包的\jasperreports-6.4.1\dist目录下,找到三个jar包引入到项目中。

image.png
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        //map作为报表数据源
        Map parameters = new HashMap(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文件夹中。

image.png

2.2.4 将web工程放入tonmcat中,启动并访问。


image.png

原文参考:https://blog.csdn.net/SHIYUN123zw/article/details/79166448

你可能感兴趣的:(Jasperreports+jaspersoft studio学习教程(二)- 使用Parameters属性传入Map数据源填充报表)