java chart_Java程序生成linechart report的方法

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

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

1.        iReport 通过parameters获取数据;

1)        主报告Parameters添加resultsList 參数

d8d4368bb90341cc8a1774ae680aea60.png

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

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

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

13b3841e227a0a9d5c3ac3855cecf4e4.png

点击“Add”加入參数:

SouthEast

按上图蓝色数字编号依次配置好。这一步的关键是:$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 testBeans = new ArrayList();

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 parameters=new HashMap();

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的一致(測试数据一样):

10ef30815aced1ad08879b19a8646a47.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值