前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java程序生成linechart report的方法

Java程序生成linechart report的方法

作者头像
全栈程序员站长
发布2022-02-17 13:21:03
4430
发布2022-02-17 13:21:03
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是全栈君。

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的方法「建议收藏」
Java程序生成linechart report的方法「建议收藏」

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

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

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

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

点击“Add”加入參数:

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

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

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

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

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

代码语言:javascript
复制
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的方法「建议收藏」
Java程序生成linechart report的方法「建议收藏」

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档