IReport 使用记录 主报表和子报表数据传递
来源:互联网 发布:高性能计算 知乎 编辑:程序博客网 时间:2024/05/22 15:37
本人菜鸟,这篇文章纯属个人记录,主要功能是通过java和Ireport生成报表,并生成pdf,word,excel格式
一、创建主报表
1. 主报表属性设置
- 主报表下面有多个子报表组成 (A4:: 842*595)
- 设置 Page width 和 Page height 为 595*842,则当前报表会填满一页
- 通过设置 属性 - Margins-Left margin/Right margin 来设置左右变局
- 拖一个 Variables 到 PageFooter 中,就会在每一页显示页码
2. 主报表的数据源设置
i. 代码中设置
java 代码中赋值到 IReport 里面动态生成报表
//创建报表字段源,必须是List集合//mainReportData 是一个bean,设定:里面的每一个字段对应子报表的数据源JRDataSource dataSource= new JRBeanCollectionDataSource(Arrays.asList(mainReportData));//parameters 添加的参数,(这里的参数和fields可以互换,在Ireport中设置就可以了)Map parameters = new HashMap();parameters.put("SUBREPORT_DIR", this.getClass().getResource("/").getPath() + "com/gx/jasperReport/monthReport/");parameters.put("LOGO_PATH", this.getClass().getResource("/").getPath() + "com/gx/jasperReport/monthReport/logo.png");parameters.put("month", reportMonth.split("-")[1]);JasperPrint jasperPrint = JasperFillManager.fillReport(sourceFileName, parameters, dataSource);
其实也就是可以传两个东西, 一个是参数 (hashMap), 一个是字段集合 (List(DataBean))
ii.IReport 设置
(1) Parameters 参数
直接在左侧面板 - Paramerters - 添加 Paramerte, 名字是上面的 hashMap 的 key,类型对应。
(2) JRDataSource 参数
直接在左侧面板 - Fields - 添加 Field, 名字是上面的 dataSource 中的的 dataBean 的成员,类型对应。
到此,主报表设置完成。
二、 创建子报表
创建子报表很简单,直接在组件面板中拖到主视图中,选择 Create a new report. 下一步,到数据源时选择 Empty dataSource,
然后下一步下一步… Don’t use any conection … 完成。
- 注:
- subReport 放在主报表的 group header
- Detail 放循环数据
- titile summary 放一次数据
三、父报表传参数和数据源个子报表
如下图,参数对应子报表参数, 数据源对应数据源
new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource(Arrays.asList($F{currentMonthIssue}))
四、服务器生成报表下载
如下:提供三种下载格式: pdf, word,xcel(最好的是用 pdf ,word 会格式问题)
switch (exportType){ case "pdf": JRPdfExporter exporter = new JRPdfExporter(); //jasperreport6.3 //exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); //jasperreport5.0 exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); response.setHeader("Content-disposition", "attachment;filename=" + reportMonth + "_" + System.currentTimeMillis() + ".pdf"); response.setContentType("application/pdf"); response.setCharacterEncoding("UTF-8"); //jasperreport6.3 //exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(response.getOutputStream())); //jasperreport5.0 exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream()); exporter.exportReport(); break; case "xls": JRXlsExporter xlsExporter = new JRXlsExporter(); xlsExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); response.setHeader("Content-disposition", "attachment;filename=" + reportMonth + "_" + System.currentTimeMillis() + ".xls"); response.setContentType("application/xls"); response.setCharacterEncoding("UTF-8"); xlsExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream()); xlsExporter.exportReport(); break; case "word": JRExporter wordExporter = new JRRtfExporter(); wordExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); response.setHeader("Content-disposition", "attachment;filename=" + reportMonth + "_" + System.currentTimeMillis() + ".doc"); response.setContentType("application/doc"); response.setCharacterEncoding("UTF-8"); wordExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream()); wordExporter.exportReport();}
阅读全文
0 0
- IReport 使用记录 主报表和子报表数据传递
- ireport jasperreport 主报表向子报表传递参数
- ireport向子报表传递参数详解
- ireport子报表
- ireport子报表数据源
- Ireport子报表总结
- Ireport子报表总结
- 主报表和子报表
- Ireport子报表的实现以及参数的传递
- 使用iReport打印报表
- 使用JasperReport和iReport制作java报表
- 使用JasperReport和iReport制作java报表
- 使用JasperReport和iReport制作java报表
- ireport 子报表制作过程
- IReport的子报表设置
- 利用iReport制作子报表
- ireport 子报表 返回参数
- 使用ireport制作报表,父报表传参给子报表
- Android关于极光推送收到空白通知的问题
- JS——动态正则
- fork函数man手册原文
- spring data jpa
- python实现的基于hmm模型的词性标注系统
- IReport 使用记录 主报表和子报表数据传递
- 基本算法-冒泡排序
- #781 – 多个变换执行的顺序问题(Transform Order Matters)
- (笔记)类的组合,是如何析构的,及领悟
- 记录unterminated string literal报错解决
- POJ3020 Antenna Placement(二分图最小路径覆盖)
- selenium + python环境搭建
- static 相关的知识点
- Hadoop完全分布式集群安装Spark