(转)使用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
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值