Java程序生成linechart report的方法「建议收藏」

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 參数

Java程序生成linechart report的方法「建议收藏」

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

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

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

 Java程序生成linechart report的方法「建议收藏」

点击“Add”加入參数:

 Java程序生成linechart report的方法「建议收藏」

按上图蓝色数字编号依次配置好。这一步的关键是:$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的方法「建议收藏」

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115334.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jar包如何读取jar包内的applicationContext.xml[通俗易懂]

    jar包如何读取jar包内的applicationContext.xml[通俗易懂]jar包如何读取jar包内的applicationContext.xml?可以用FileSystemXmlApplicationContext。

    2022年7月16日
    17
  • VMware中的ubuntu虚拟机开机黑屏,无法打开桌面

    昨天因为在虚拟机中搭环境,崩了,可能是因为脚本错误什么的原因,或者误删除了什么东西的原因,导致,虚拟机重启之后一直处于黑屏状态。如下图:然后百度了很多解决方法,都不成功,后来有大佬指点用快照恢复,但是,我发现一个残酷的事实,我之前没有使用过快照,所以不可行,所以只好重装了。信任IT界名言“没有什么是重装系统解决不了的”。可能只是我的这个不行,但是整理了一下网上的方法,码文,纪念一下…

    2022年4月6日
    1.1K
  • 分布式——CAP原理

    分布式——CAP原理一.概述在理论计算机科学中,CAP原理指出对于一个分布式系统来说,当设计读写操作时,只能同时满足一下三点中两个:一致性(Consistence):所有节点访问同一份最新的数据副本 可用性(Avaliability):非故障的节点在合理时间内返回合理的响应(不是错误或者超时的响应) 分区容错性(Partitiontolerance):分布式系统出现网络分区(分布式系统中,多个节点之前的网络本来是连通的,但是由于某些故障,比如部分节点网络出了问题。某些节点之间不连通,整个网络就分为几个区域,这就叫

    2022年5月19日
    46
  • uint32 java_关于Java的int和C的uint32之间的转换

    uint32 java_关于Java的int和C的uint32之间的转换最近在做一个项目,是Android程序跟单片机之间通讯的,需求是Android程序给单片机发送一堆数据之后,要对这些数据进行CRC校验,手机端自己算一个校验值,发送给单片机,由单片机跟单片机部分算出的校验值做对比,一致则通过校验,不一致则校验失败。刚开始用Java自带的CRC校验类做校验,用CRC校验工具测试,结果一致,于是满怀信心的开始跟单片机正式测试,结果校验失败。以为是大小端的原因,就改了下…

    2022年9月7日
    0
  • java文件上传总结[通俗易懂]

    java文件上传总结[通俗易懂]前言文件上传是各类应用中经常碰到的需求,不管是上传图片、文件、音频、视频等,或者其他类型的文件,都是后端需要解决的,采用什么样的方式进行上传,或者对上传后的文件如何进行存储,甚至如何更加高效的上传文件等问题,都是在实际开发中需要解决的,本文将对常用的文件上传使用进行一下简单的小结以springboot为例,下面我们就开始撸码吧,开工前我们还是做一下简单的准备吧,本文的演示demo框架为springboot2.2.1版本,只需简单引入一个下面的依赖即可,其他需要用到的,我们增量添加即可 <de

    2022年5月15日
    35
  • OA系统权限管理设计(转载)

    OA系统权限管理设计(转载)

    2021年12月6日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号