本人最近这几天一直在找这方面的资料。可惜网上的资料都是生成为什么格式的。 本人有一个需求是,当用户点击菜单后,将查询的数据填充到已经编译的.jasper文件中,然后在列表中显示,然后当用户点击按什么格式导出,在生成什么格式就好了。 可能本人资质愚笨,能力较弱,希望做过这方面的高手能帮忙指点迷津。 跪谢了。
请不要给本人一些网上博客的连接,好多人都是只转不测试,例子都没有能通过测试的。谢谢。
请不要给本人一些网上博客的连接,好多人都是只转不测试,例子都没有能通过测试的。谢谢。
解决方案:30分
//拿到写好的*.jasper 文件 URL reportURL = this.getClass().getClassLoader().getResource(RES_REPORT); //拿到报表 JasperReport jasperReport = (JasperReport) JRLoader.loadObjectFromLocation(reportURL.toString()); JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, paramMap,new JRBeanCollectionDataSource(new LinkedList())); JRPdfExporter exporter = new JRPdfExporter(); exporter.setParameter(JRExporterParameter.FONT_MAP, FontConst.DEFAULT_FONT_MAP); exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, printList); String fileName = "**图"+System.currentTimeMillis()+".pdf"; String filePath = SystemConfig.getReportFolder()+"/"+fileName; File file = new File(filePath); exporter.setParameter(JRExporterParameter.OUTPUT_FILE,file); exporter.exportReport();
这样就完了,本人记得导出的都是PDF的,不知道这东西还能导出不同格式 的。对应的jasper 文件里的文本域用MAP就可以,对于List 就直接用List 这屁东西没什么难的。
解决方案:50分
List<RowDataDefectMagager> rowdata=new ArrayList<RowDataDefectMagager>(); if (result!=null) { for (Map<String, Object> map : result) { DecimalFormat format = new DecimalFormat(("#####0.00")); String sum = map.get("sum").toString(); String count = map.get("count").toString(); String sumBefore = map.get("sumBefore").toString(); String countBefore = map.get("countBefore").toString(); Double percentNow = 0d; if (!"0".equals(sum) && !"0".equals(count)) { percentNow = Double.valueOf(format.format((Double.valueOf(sum)/Double.valueOf(count))*100)); } Double percentBefore = 0d; if (!"0".equals(sumBefore) && !"0".equals(countBefore)) { percentBefore = Double.valueOf(format.format((Double.valueOf(sumBefore)/Double.valueOf(countBefore))*100)); } RowDataDefectMagager date=new RowDataDefectMagager(); date.setRow1(map.get("month").toString()); date.setRow2(sum); date.setRow3(count); date.setRow4(percentNow+"%"); date.setRow5(percentBefore+"%"); rowdata.add(date); } } JasperPrint rowDataPrint = JasperFillManager.fillReport(jasperReportProduct, paramMap, new JRBeanCollectionDataSource(rowdata));
这是个LIST 填充,对应出来的报表就是:
A 1
B 2 这样的。
解决方案:20分
笑死 ,jasper 跑完的就是一个PDF文件,要么一个流,或是一个图片,页面展示这个就好了。
正常的做法都是在页面 用JSP或EXTJS JQUERY 这样的框架生成一些图表,然后做些数据的展现,但是当点击导出报表的时候则是根据查询的条件去拿数据然后填充到jasper文件里面下载,所谓的格式选择不过是多种导出方式而已,例如PDF,EXCEL。
正常的做法都是在页面 用JSP或EXTJS JQUERY 这样的框架生成一些图表,然后做些数据的展现,但是当点击导出报表的时候则是根据查询的条件去拿数据然后填充到jasper文件里面下载,所谓的格式选择不过是多种导出方式而已,例如PDF,EXCEL。