博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java程序生成linechart report的方法
阅读量:4570 次
发布时间:2019-06-08

本文共 2741 字,大约阅读时间需要 9 分钟。

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

利用上一篇()生成.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
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的一致(測试数据一样):

 

转载于:https://www.cnblogs.com/yxwkf/p/5392717.html

你可能感兴趣的文章
setup elk with docker-compose
查看>>
C++ GUI Qt4学习笔记03
查看>>
Java基础回顾 —反射机制
查看>>
c# 前台js 调用后台代码
查看>>
2017-02-20 可编辑div中如何在光标位置添加内容
查看>>
$.ajax()方法详解
查看>>
jquery操作select(增加,删除,清空)
查看>>
Sublimetext3安装Emmet插件步骤
查看>>
MySQL配置参数
查看>>
全面理解Java内存模型
查看>>
存储过程
查看>>
生成器
查看>>
将一个数的每一位都取出来的方法!
查看>>
2) 十分钟学会android--建立第一个APP,执行Android程序
查看>>
面试题8:二叉树下的一个节点
查看>>
hash冲突的解决方法
查看>>
Asp.Net webconfig中使用configSections的用法
查看>>
mysql 二进制日志
查看>>
阻止putty变成inactive
查看>>
TP框架代码学习 学习记录 3.2.3
查看>>