(转)使用IReport3.7.3开发C/S应用的报表系统

 之前我写了三篇关于使用IReport3.7.2开发Web报表的文章,忽然最近有博友询问关于使用IReport开发C/S应用客户端报表的方法,呵呵,说实话我之前一直做B/S应用,还确实没有过多考虑C/S应用下报表的开发。不过我认为原理是相通的,下面就来仔细介绍一下。

        首先是绘制报表,报表采用JavaBean作为数据源,其方法可以参考《使用IReport3.7.2开发WEB报表》的系列文章,这里就不再累述。

        其次是编写获取数据的商业JavaBean。实现的JavaBean就是《用IReport3.7.2开发Web报表(三)—— 编写报表程序》中实现的BMeetingPhoneListDS、CAddressList和IDataSource三个文件。

        最后也就是今天需要讲解的和WEB报表实现完全不同的部分——让报表在客户端显示。

        建立一个netbean应用平台程序(具体如何建立我将未来单独编写博客来介绍),并建立一个showreport的模块,在此模块中建立一个窗口(现在netbean强烈建议做C/S应用采用netbean的RCP开发,而不再推荐直接建立基于SWing的Java桌面应用程序,其实RCP也是Swing的应用,只是其对Swing进行桌面开发进行了一些封装)。在此窗口中放置一个jButton控件和二个jLabel控件,其布局如下图所示:

使用Swing开发C/S应用的报表系统简介 - 伏虎 - 追梦人

         其中将jButton的文字描述改成“显示报表”,并更改变量名为btnShowReport。将其中一个jLabel的文字描述改为“当前路径:”。将另一个jLabel的变量名更改成labPath。

         在netbean中双击btnShowReport按钮为其填写按钮的点击事件,其代码如下:

        //获取当前的相对路径,由此获得报表文件所在全路径,并显示此路径
        File f=new File(".");
        String p=f.getAbsolutePath();
        StringBuffer sb=new StringBuffer(p);
        sb.deleteCharAt(sb.length()-1);
        sb.append("report/meeting_phone_list.jasper");
        String cd=sb.toString();
        labPath.setText(cd);

        //CMeetingPhoneListDS为自定义的活动数据的类。
        BMeetingPhoneListDS mpl_ds=new BMeetingPhoneListDS();
        //获得数据,数据为java.util.Collection类型
        java.util.Collection collection=null;
        collection=mpl_ds.getCollection();

        //因为是基于JavaBean数据源的,因此采用JRBeanCollectionDataSource类
        JRBeanCollectionDataSource ds=new JRBeanCollectionDataSource(collection);

        JasperPrint jasperPrint = null;
        Hashtable ht=new Hashtable();
        //将报表名取出,放入Map类对象中,方便之后传入报表
        ht.put("meeting_name", "客户端报表");
        //将参数置入报表,参数包括报表文件路径、报表接收的传入参数(以Map类提供)、报表数据源
        try{
            jasperPrint = JasperFillManager.fillReport(cd, ht, ds);
        }
        catch(Exception e){
            labPath.setText("错误:"+e.getMessage());
        }
        if(jasperPrint!=null){
            //显示报表
            JRViewer rv=new JRViewer(jasperPrint);
            JFrame jf = new JFrame("报表预览");
            jf.add(rv);
            jf.pack();
            jf.setVisible(true);
        }

 

到此运行程序就已经实现了客户端调用IReport设计的JasperReport报表了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
第8课 JRXML报表模板元素讲解3 继续上节课的内容,讲解jrxml文件的元素 • filterExpression是用来过滤数据源的记录的,用法很简单。如果在filterExpression中的表达式是 Boolean.TRUE,则当前记录会显示在报表上,否则,filterExpression中的表达式是 Boolean.FALSE 或者 null,则当前记录不会显示。 注意:一般情况下我们是不会使用此元素的,因为没有必要啊,直接在sql中写上条件就可以了。 只有当我们无法通过简单的方式来过滤数据的时候,才会用到这个元素,比如 CSV 文件数据源。 一个模板文件最多只能包括一个此元素。 例子: <![CDATA[$F{status}.equals("active") ? Boolean.TRUE :Boolean.FALSE]]> • • group 元素被用来将数据源中的一些连续的记录根据一些共同的属性来进行分组。 例子: <![CDATA[$F{FieldName}]]> • background 元素被用来定义报表中所有页面的背景。可以展现图像和文本。 注意:此元素在一个jrxml模块中最多只能使用一次。 例子: "image.gif" 第9课 JRXML报表模板元素讲解4 继续上节课的内容,讲解jrxml文件的元素 • <title> 顾名思义:title就是报表的标题了。它只在报表的开始出现一次。 例子: <title> <![CDATA[myTitle]]> </title> • • pageHeader定义报表页的面头信息,它显示在每个页的开始位置。 每个jrxml模板文件可以包括0个或者1个pageHeader元素。 例子: <![CDATA[Page Header]]> • columnHeader定义每列数据的列标题。 注意:如果是报表中只有一列数据,则会忽略列标题。如果你指定了列标题(pageHeader),那么,列标题的个数必须与列数相同。 第10课……

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值