Python中文社区 2015-03-04
这段时间一直在研究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(); }