ireport+jasper 用javabean作数据源

      先弄清ireport和jasper之间的关系。
      ireport说到底是一个工具,而且是好工具,首先是免费(这非常重要),其次是免费正版,第三提高了象我这样常常写报表人的效率。

      如果您熟悉jasper规范,自己即可用其它工具手工编写xml文档,因为ireport最终一定要产生两个东西xml和jasper,不过我想,誰要喜欢手动编写整个xml,一定是有病,要么就是太闲了。

 


      这里介绍的是用javabean作数据源。先贴最重要的一段代码,

     List<Customer> data = new ArrayList<Customer>();     //Customer是bean
        data.add(c);
        //获取数据源
     JRDataSource dataSource = new JRBeanCollectionDataSource(data);
        ServletOutputStream ouputStream = null;
        try {
            //找到.jasper报表的路径
            String jasper = "/WEB-INF/classes/reportTest.jasper";
            String cd=ServletActionContext.getServletContext().getRealPath(jasper);
            // 生成JasperPrint
            JasperReport report = (JasperReport) JRLoader.loadObject(cd);
            //将参数置入报表,参数包括报表文件路径、报表接收的传入参数(以Map类提供)、报表数据源
        JasperPrint jasperPrint = JasperFillManager.fillReport(report, null, dataSource);
            System.out.println("填充报表......");
            //设定输出格式
        HttpServletResponse resp = ServletActionContext.getResponse();
            ouputStream = resp.getOutputStream();//  resp.getOutputStream();  
            resp.setContentType("application/pdf");
            resp.setCharacterEncoding("UTF-8");  
            resp.setHeader("Content-Disposition", "attachment; filename="+ URLEncoder.encode("PDF报表", "UTF-8") + ".pdf");  
                    
            // 使用JRPdfExproter导出器导出pdf  
            JRPdfExporter exporter = new JRPdfExporter();  
            // 设置JasperPrintList  
            exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);  
            exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);  
            exporter.exportReport();         
            ouputStream.close();  
        }catch(Exception e){
        	e.printStackTrace();
            System.out.println("输出报表失败!原因:"+e.getMessage());
        }

 

      数据源已经定义好,现在可以用ireport的可视化工具来做报表了。用法可以参考

      http://blog.csdn.net/lldwolf/archive/2008/06/19/2564554.aspx

 

你可能感兴趣的:(c,.net,bean,xml,Web)