`
zzc1684
  • 浏览: 1241228 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Spring MVC结合ireport采用javabean作为数据源的实现

阅读更多

这段时间一直在研究ireport如何和springmvc结合来实现报表的显示

 

网上查了很多资料,从各位前辈们的经验下结合自己的心得总结了SpringMVC结合ireport采用javabean作为数据源的实现方式,并总结代码如下:

 

Ireport采用javabean作为数据源实现数据的载入,对于java中,使用得到的list集合封装到JRBeanCollectionDataSource中来得到数据。最后通过JRHtmlExporter将结果展现给用户。

 

输出为html格式的设计方案:

 

    @RequestMapping("/customer/reporthtml.do")  
        public void report(HttpServletRequest request, HttpServletResponse response)  
                throws IOException, JRException {  
            String ctxpath = request.getSession().getServletContext()  
                    .getRealPath("/report/beandata.jasper");          
            List<HKCustomer> listInfo = this.hkCustomerService.listAllCustomers();  
            File reFile = new File(ctxpath);  
            Map parameters = new HashMap();//根据变量来查询      
            JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(listInfo);  
            JasperPrint jasperPrint = JasperFillManager.fillReport(  
                    reFile.getPath(), parameters, ds);  
              
            JRHtmlExporter exporter = new JRHtmlExporter();       
            //输出为html格式的报表文件  
            exporter.setParameter(JRHtmlExporterParameter.JASPER_PRINT, jasperPrint);  
            exporter.setParameter(JRHtmlExporterParameter.OUTPUT_STREAM,response.getOutputStream());       exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,Boolean.FALSE);  
          //移除设计报表中的空白行 exporter.setParameter(JRHtmlExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);  
           exporter.setParameter(JRHtmlExporterParameter.CHARACTER_ENCODING, "utf-8");  
              exporter.exportReport();  
        }  

 

 

输出为execl表格格式

 

 

@RequestMapping("/customer/reportxls.do")  
    public void exportxls(HttpServletRequest request,  
            HttpServletResponse response) throws IOException, JRException {  
        String ctxpath = request.getSession().getServletContext()  
                .getRealPath("/report/beandata.jasper");          
        List<HKCustomer> listInfo = this.hkCustomerService.listAllCustomers();  
        File reFile = new File(ctxpath);  
        Map parameters = new HashMap();       
        JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(listInfo);  
        JasperPrint jasperPrint = JasperFillManager.fillReport(  
                reFile.getPath(), parameters, ds);    
        JRXlsExporter exporter=new JRXlsExporter();       
        exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint);  
        exporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, response.getOutputStream());  
        exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);  
/设置输出的格式  
response.setHeader("Content-Disposition", "attachment;filename=customer.xls");  
response.setContentType("application/vnd_ms-excel");  
exporter.exportReport();

 

设置输出为Pdf格式的文件

@RequestMapping("/customer/reportpdf.do")  
  
         publicvoid exportpdf(HttpServletRequest request,HttpServletResponse response) throwsJRException, IOException{  
  
                   Stringctxpath = request.getSession().getServletContext()  
  
                                     .getRealPath("/report/beandata.jasper");                
  
                   List<HKCustomer>listInfo = this.hkCustomerService.listAllCustomers();  
  
                   FilereFile = new File(ctxpath);  
  
                   Mapparameters = new HashMap();                  
  
                   JRBeanCollectionDataSourceds = new JRBeanCollectionDataSource(listInfo);  
  
                   JasperPrintjasperPrint = JasperFillManager.fillReport(  
  
                                     reFile.getPath(),parameters, ds);             
  
                   JRPdfExporterexporter = new JRPdfExporter();       
  
                   exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT,jasperPrint);  
  
                   exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM,response.getOutputStream());  
  
                   response.setHeader("Content-Disposition","attachment;filename=customer.pdf");  
  
                   response.setContentType("application/pdf");  
  
                   response.setCharacterEncoding("utf-8");  
  
                   exporter.exportReport();  
  
         } 

 

 

 

分享到:
评论

相关推荐

    ireport利用javabean做数据源实例

    4. **配置JavaBean数据源**:在iReport中,选择“New Data Source”创建新的数据源,选择“JavaBean”类型。接着,提供JavaBean类的完整路径,并列出将用于报表的属性。每个属性将在报表字段中对应一个列。 5. **...

    Spring MVC整合IReport生成PDF及中文不显示、乱码解决

    4. **处理数据源**:报表需要数据来展示,这可以通过JavaBean、Map或者自定义数据源实现。确保中文数据在传递过程中不被编码错误,可以使用UTF-8编码。 5. **生成PDF**:使用`JasperFillManager.fillReport()`方法...

    完整的web+ireport报表源代码

    这个服务器可能是基于Spring、Struts或其它MVC框架构建的,通过Servlet、JSP和JavaBean来实现业务逻辑。在前端,可能使用HTML、CSS和JavaScript构建用户界面,与后端通过AJAX进行异步通信,使得用户无需刷新页面就能...

    springmvc+jasperReport5.6.0

    总的来说,Spring MVC + JasperReport 5.6.0 的结合可以让你轻松地在Web应用中实现复杂的数据展示和报表功能,通过学习和实践,你可以掌握这个强大的工具,提升开发效率,为用户提供直观、美观的数据报告。

    java+ireport报表开发实例

    3. **数据源**:可以连接到各种类型的数据库,如MySQL、Oracle等,也可以使用JavaBean、XML文件等作为数据源。 4. **表达式和脚本**:iReport支持Java表达式和脚本,用于动态计算值或执行复杂的逻辑。 5. **样式表...

    java制作报表

    这可能涉及到Servlet、Spring MVC等框架,以及Ajax技术来实现动态加载和交互。 总之,Java制作报表涉及多个层面,从选择合适的报表库到设计模板,再到数据处理和集成,每个步骤都需要开发者具备扎实的Java基础和...

    java调用jasper

    然后,我们可以使用`JasperFillManager`填充报表,传入数据源(如数据库连接、JavaBean集合等)和报表模板。填充后的报表对象可以通过`JasperExportManager`导出为各种格式。 在Web应用中,为了使用户能够通过...

Global site tag (gtag.js) - Google Analytics