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”加入參数:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGJzb25nNzU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

按上图蓝色数字编号依次配置好。这一步的关键是:$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:\workspace\jasperreport\linecharReport文件夹下生成了testLineReport.pdf文件。打开该PDF文件,看到与在iReport中Preview的一致(測试数据一样):

Java程序生成linechart report的方法的更多相关文章

  1. Java程序生成exe可执行文件详细教程(图文说明)

    ava程序打包成exe可执行文件,分为两大步骤. 第一步:将Java程序通过Eclipse或者Myeclipse导成Jar包 第二步:通过exe4j讲Jar包程序生成exe可执行文件 第一步详解: 将 ...

  2. Java程序生成exe可执行文件

    Java程序打包成exe可执行文件,分为两大步骤. 第一步:将Java程序通过Eclipse或者Myeclipse导成Jar包 第二步:通过exe4j讲Jar包程序生成exe可执行文件 第一步详解: ...

  3. 理解JAVA - 面向对象(object) - 属性,方法

    理解JAVA - 面向对象(object) - 属性,方法 多态的体现:    向上造型,父类接收子类对象:向上造型:    从父类角度看不到子类独有的方法:面向对象,人类认知世界的方式:生活中每天都 ...

  4. Java 字符串拼接 五种方法的性能比较分析 从执行100次到90万次

    [请尊重原创版权,如需引用,请注明来源及地址] > 字符串拼接一般使用“+”,但是“+”不能满足大批量数据的处理,Java中有以下五种方法处理字符串拼接,各有优缺点,程序开发应选择合适的方法实现 ...

  5. 工作随笔——Java调用Groovy类的方法、传递参数和获取返回值

    接触Groovy也快一年了,一直在尝试怎么将Groovy引用到日常工作中来.最近在做一个功能的时候,花了点时间重新看了下Java怎么调用Groovy的方法.传递参数和获取返回值. 示例Groovy代码 ...

  6. java 调用webservice的各种方法总结

    java 调用webservice的各种方法总结 几种流行的开源WebService框架Axis1,Axis2,Xfire,CXF,JWS比较 方法一:创建基于JAX-WS的webservice(包括 ...

  7. Java 获取当前系统时间方法比较

    转载: http://blog.csdn.net/zzjjiandan/article/details/8372617 一. 获取当前系统时间和日期并格式化输出: import java.util.D ...

  8. JAVA下的Thread.sleep方法一定要try

    try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } 不同于C#,JAVA里的Thre ...

  9. paip兼容windows与linux的java类根目录路径的方法

    paip兼容windows与linux的java类根目录路径的方法 1.只有 pathx.class.getResource("")或者pathx.class.getResourc ...

随机推荐

  1. HDU 3746 Cyclic Nacklace(KMP找循环节)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2087 题目大意:给你一个字符串,求出将字符串的最少出现两次循环节需要添加的字符数. 解题思路: 这题需 ...

  2. ISSCC 2017论文导读 Session 14 Deep Learning Processors,DNPU: An 8.1TOPS/W Reconfigurable CNN-RNN

    转载请注明,本文出自Bin的专栏http://blog.csdn.net/xbinworld,谢谢! DNPU: An 8.1TOPS/W Reconfigurable CNN-RNN Process ...

  3. Weex Workshop 挑战赛,等你来战!

    一个颠覆性的移动开发方式,一个匠心打造的跨平台移动开发工具,一个后App时代的生产力解放者—Weex,针对App Native开发频繁发版和多端研发的痛点,H5开发的页面稳定性.性能体验等问题,提供了 ...

  4. day4 作业计算器

    作业:计算器开发 (1)实现加减乘除及拓号优先级解析: (2)用户输入 1 - 2 * ( (60-30 +(-40/5) * (-9-2*5/-3 + 7 /3*99/4*2998 +10 * 56 ...

  5. explode() 字符串转换数组

    explode() 函数把字符串分割为数组. 语法 explode(separator,string,limit) 例子: $str = "Hello world. It's a beaut ...

  6. [hdu3934] 凸包 旋转卡壳

    大致题意: 求多边形的最大内接三角形 旋转卡壳 模板题 #include<cstdio> #include<iostream> #include<cstring> ...

  7. python配置libsvm

    转载博文:win10(64-bit) + python3.6.0(64-bit) 配置libsvm-3.22 https://blog.csdn.net/weixin_35884839/article ...

  8. 洛谷——P2683 小岛

    P2683 小岛 题目背景 西伯利亚北部的寒地,坐落着由 N 个小岛组成的岛屿群,我们把这些小岛依次编号为 1 到 N . 题目描述 起初,岛屿之间没有任何的航线.后来随着交通的发展,逐渐出现了一些连 ...

  9. php 5.6 安装openssl extension 出现编译错误

    废话不多说,直接上问题: PHP和openssl extension都是最新版本的,标准步骤安装时候出现如下问题: php:php-5.6.27 openssl:openssl-1.1.0e ==== ...

  10. 【BZOJ 4035】 4035: [HAOI2015]数组游戏 (博弈)

    4035: [HAOI2015]数组游戏 Time Limit: 15 Sec  Memory Limit: 32 MBSubmit: 181  Solved: 89 Description 有一个长 ...