zoukankan      html  css  js  c++  java
  • Java程序生成linechart report的方法

    iReport一般是一个设计阶段的工具。用来设计出报表的排版和内容。报表的动态生成须要程序来实现(毕竟报表的数据是动态的,数量是非常多的,不可能用iReport Preview的方式一个个手工去生成)。

    利用上一篇iReport5.6.0linechart制作方法http://blog.csdn.net/hbsong75/article/details/39992475)生成.jasper文档后。就能够通过Java程序的方法来动态生成linechart报表了。

    程序生成报表的要素主要是以下三点:

    1.        iReport 通过parameters获取数据;

    1)        主报告Parameters添加resultsList 參数


    这个參数接下来要用来接收从程序的MAP中传过来的子数据集;

    2)        子数据集(subDataSet)配置Parameter

    在Summary band中选择linechart元素,右键选择“CharData“,在弹出的对话框中选择”Parameters” tab 页。在这里我们将要配置怎样从程序中接收子数据集的数据源:

     

    点击“Add”加入參数:

     

    按上图蓝色数字编号依次配置好。这一步的关键是:$P{REPORT_PARAMETERS_MAP}.get("resultsList"),当中在后面的程序中传递数据源的键值须要时“resultsList”,跟这里的key值要一致,否则就获取不到传递的数据了。

    配置完毕后点击“CompileReport“,又一次生成.jasper文件。

     

    2.        调用JasperRunManager的几个静态方法,如runReportToPdf,runReportToHtmlFile等;

    演示样例程序例如以下:(TestBean.java參考上文)

    package com.report.linechart;
     
    import java.io.File;
    import java.io.FileOutputStream;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
     
    import net.sf.jasperreports.engine.JREmptyDataSource;
    import net.sf.jasperreports.engine.JasperRunManager;
    import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
     
    public class TestReportGenerator {
        /**
         * @param args
         */
        public static void main(String[] args) {   
            List<TestBean> testBeans = new ArrayList<TestBean>();
            TestBean tb1 = new TestBean();
            tb1.setCat("1");
            tb1.setValue(1);
            testBeans.add(tb1);
            TestBean tb2 = new TestBean();
            tb2.setCat("2");
            tb2.setValue(2);
            testBeans.add(tb2);    
            File reportFile = new File("D:\workspace\jasperreport\linecharReport\testLineReport.jasper");
            File reportPdfFile = new File("D:\workspace\jasperreport\linecharReport\testLineReport.pdf");
            Map<String,Object> parameters=new HashMap<String,Object>();
            JRBeanCollectionDataSource resultsList = new JRBeanCollectionDataSource(testBeans);
           
            parameters.put("resultsList", resultsList);
            parameters.put("reportTitle", "This is a test report");
            try {
                byte[] reportStream = JasperRunManager.runReportToPdf(reportFile.getPath(),parameters,new JREmptyDataSource());
                FileOutputStream fw = new FileOutputStream(reportPdfFile);
                fw.write(reportStream);
                fw.close();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    3.        通过iReport的Parameters关联数据源

    能够看到。resultsList是JRBeanCollectionDataSource类型,程序中通过 parameters.put("resultsList",resultsList),将linechart须要用到的TestBean数据集合进行了传递;相相应的,iReport的配置中$P{REPORT_PARAMETERS_MAP}.get("resultsList") 获取了该数据集。

     

    最后运行该測试程序,能够发如今D:workspacejasperreportlinecharReport文件夹下生成了testLineReport.pdf文件。打开该PDF文件,看到与在iReport中Preview的一致(測试数据一样):

     

  • 相关阅读:
    查找文件的绝对路径
    购买成都二手商品房交易流程(卖方存在欠银行贷款的情况)
    针对CCTV摄像头的扫描爆破工具 :Cameradar
    交换机的基本配置
    思科交换机和路由器的远程配置
    安装Windows和Ubuntu双系统--Ubuntu安装过程识别不了硬盘
    SpringBoot 配置
    Tomcat9在CentOS7上启动慢解决办法,实测可行
    Linux安装JDK
    电影分享——《小丑》
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5392717.html
Copyright © 2011-2022 走看看