iReport 笔记(八) 添加统计信息
2008-10-16 12:13
295 查看
添加统计信息
本节说明如何添加本页合计、累计合计、总合计三种类型的统计信息,说明如下:本页合计:只统计本页的数据
累计合计:截至当前页为止的数据合计
总合计:所有数据的合计
我在此仍然使用JavaBean集合作为数据源,JavaBean类很简单,只有一个整型成员,如下所示:
package lld.test.ireport; public class NumberBean { private int number; public int getNumber() { return this.number; } public void setNumber(int number) { this.number = number; } }
报表将为这个整型成员number进行上述三种统计,制作的报表如下图所示:
其中sumValue是一个Parameter,表示累计合计,定义如下图所示:
其中Vaiable Expression的值为
new java.lang.Integer($V{sumValue}.intValue() + $F{number}.intValue())
PAGE_SUM 表示本页合计,也是一个Variable,定义如下图所示:
与sumReport的定义基本相同,只是“Reset Type”设为Page,而不是Report。
SUM_VALUE 表示总合计,是一个Parameter,由外部传入,因为在打印前,总合计信息可提前获知,定义如下图所示:
用于生成报表的Servlet程序如下所示:
package lld.test.ireport; import java.io.IOException; import java.io.OutputStream; import java.net.URLEncoder; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.jasperreports.engine.JRDataSource; import net.sf.jasperreports.engine.JRExporterParameter; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; import net.sf.jasperreports.engine.export.JRPdfExporter; import net.sf.jasperreports.engine.util.JRLoader; public class SummaryReportServlet extends HttpServlet { private static final long serialVersionUID = 3226292331974282393L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { try { String root_path = this.getServletContext().getRealPath("/"); root_path = root_path.replace('//', '/'); String reportFilePath = root_path + "WEB-INF/classes/lld/test/ireport/summary_rep.jasper"; JRDataSource dataSource = this.createDataSource(); Map<String,Object> params = new HashMap<String, Object>(); params.put("SUM_VALUE", new Integer(19900)); //设定合计值 JasperReport report = (JasperReport)JRLoader.loadObject(reportFilePath); JasperPrint jasperPrint = JasperFillManager.fillReport(report, params, dataSource); OutputStream ouputStream = 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(); exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream); exporter.exportReport(); ouputStream.close(); }catch(Exception ex) { ex.printStackTrace(); } } private JRDataSource createDataSource() { //生成测试数据 ArrayList<NumberBean> beans = new ArrayList<NumberBean>(); for(int i = 0; i < 200; i++) { NumberBean bean = new NumberBean(); bean.setNumber(i); beans.add(bean); } return new JRBeanCollectionDataSource(beans); } public static void main(String[] args) throws Exception { } }
代码与以前的代码相似度很高,阴影部分的代码是设定一个合计值,因为只是示例,我在此偷了个懒,直接把结果给传过去了。结果如下图所示:
相关文章推荐
- iReport 笔记(七) 为子报表添加统计信息 【转】
- iReport 笔记(八) 添加统计信息 【转】
- iReport 笔记(八) 添加统计信息
- iReport 笔记(七) 为子报表添加统计信息
- iReport 笔记(七) 为子报表添加统计信息
- Wireshark网络分析实战笔记(三)基本信息统计工具的用法
- ecshop后台添加一个完整的统计用户信息的功能
- 什么是使用记录访问权限呢?这是在Android5.0(Api level 21)新添加的,通过该权限我们可以查看设备上其它应用使用情况的统计信息等。
- Oracle OCP笔记(21)统计信息,顾问程序,警报与阀值
- .net开发笔记之十二:在Datagrid控件中添加统计(合计)行
- ------------我的一些笔记(基于SQL 2005)(统计信息的一些笔记)------------
- .net开发笔记之十二:在Datagrid控件中添加统计(合计)行
- 【安全牛学习笔记】信息统计
- 工作笔记 --->新疆统计分析添加市场管理员相关功能笔记
- 购物网第二阶段总结笔记5:用户个人资料修改页面、密码修改页面、用户积分页面、用户统计信息页面
- Git 学习笔记(简介、安装、添加提交文件、查看状态及更改信息)
- SQL语句笔记,增加一个字段,统计该表内的数据信息
- Postgres8.3.3增强版(添加SQL执行信息统计功能)
- 【SQL Server学习笔记】索引调优、统计信息、查询调整、资源调控
- 在GridView中添加一行(新行) 如统计信息等