`
菲利浦思
  • 浏览: 24386 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

如何通过jasperreports/jfreechart在产生的图形报表(html方式)中加入超连接

阅读更多
通过产生Image Map的方式实现图片上相应区域的超连接
目前版本的ireport提供的可视化报表设计界面上无此功能,同时jasperreports也没有实现.
需要修改的几个Class:
1)net.sf.jasperreports.engine.fill.JRBaseFiller
通过这个Class传递一些用户设定的参数
增加一个参数:表示是否需要在图形报表中加超连接
修改的代码如下:
a)实例变量中加上:
protected boolean isNeedHref;

b)在protected void setParameters(Map parameterValues) throws JRException这个方法中加上:

if(parameterValues.get(JRParameter.IS_NEED_HREF)!=null){
isNeedHref=((Boolean)parameterValues.get(JRParameter.IS_NEED_HREF)).booleanValue();
}

JRParameter.IS_NEED_HREF这个是新增的

c)增加一个方法

protected boolean isNeedHref(){
         return isNeedHref;
}

2)net.sf.jasperreports.engine.fill.JRFillChart
这个Class负责调用jfreechart产生图表
将evaluate***Image()方法中调用ChartFactory.createBarChart()的最后一个参数改为filler.isNeedHref ()

3)net.sf.jasperreports.engine.export.JRHtmlExporter
这个Class负责输出html格式的报表
       a)增加一个实例变量:

protected boolean isWriteImageMap = false;


      当我们的程式传递参数的时候可以选择是否产生Image Map的动作
       b) 修改方法public void exportReport() throws JRException :
      增加如下代码:

Boolean isWriteImageMapParameter = (Boolean)parameters.get(JRExporterParameter.IS_WRITE_IMAGE_MAP);
if (isWriteImageMapParameter != null){
     isWriteImageMap = isWriteImageMapParameter.booleanValue();
}


JRExporterParameter.IS_WRITE_IMAGE_MAP这个也是新增的

         c)修改方法protected void exportImage(JRPrintImage image, JRExporterGridCell gridCell):
         方法的第一行加两个String变量:

String mapString = "";
String mapName = "";



在代码imagePath = imagesURI + imageName;后一行加上

if(isWriteImageMap&&renderer instanceof JCommonDrawableRenderer){
JFreeChart o = ((JCommonDrawableRenderer)renderer).getJFreeChart();
if(o!=null){
     ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());						
     try {
     ServletUtilities.saveChartAsJPEG(o, image.getWidth() , image.getHeight(), info, null);					
     mapName = "Map"+imageName;
     mapString = ChartUtilities.getImageMap("Map"+imageName, info ,new StandardToolTipTagFragmentGenerator(),new StandardURLTagFragmentGenerator ());
     mapName = " usemap=\"#"+mapName+"\" ";
     } catch (Exception e1) {
         e1.printStackTrace();
     }
   }
}


最后将该方法的最后几行代码

writer.write(" alt=\"\"/>");
if (href != null){
writer.write("</a>");
}
writer.write("</td>\n");


改为

writer.write(" alt=\"\""+mapName+"/>");
if (href != null){
writer.write("</a>");
}
writer.write("</td>\n");
if(mapString!=null&&mapString.trim().length()>0)
writer.write(mapString+"\n");



也可以自己去实现org.jfree.chart.imagemap.URLTagFragmentGenerator 这个接口,然后替换掉
StandardURLTagFragmentGenerator,决定超连接的方式,可以是我们自己定义的javascript方法等等.

当我们的自己的程式需要产生带超连接的图形报表时,在程式中需要这样做:

parameters.put(JRParameter.IS_NEED_HREF, Boolean.valueOf(true));
exporter.setParameter(JRHtmlExporterParameter.IS_WRITE_IMAGE_MAP,Boolean.valueOf(true));


付上一个产生出的html图形报表样本
  • temp.rar (33.3 KB)
  • 描述: 产生出的带Image Map的html图形报表样本
  • 下载次数: 532
分享到:
评论
2 楼 wangxzg 2007-05-23  
看看啊
1 楼 sctom123 2007-01-23  
不错!

相关推荐

    A Tutorial on JasperReports, iReport and JFreeChart

    ### 教程:使用JasperReports、iReport与JFreeChart进行Java报表开发 #### 一、引言 本教程旨在介绍三个开源Java报表工具——JasperReports、iReport及JFreeChart的基本概念与实际应用。这三个工具在报表设计与...

    java图形报表详解

    在Java编程领域,图形报表是一种重要的数据可视化工具,它能够将复杂的数据转化为易于理解的图形,帮助用户快速洞察数据背后的模式和趋势。本资源“java图形报表详解”提供了开发所需的jar包以及详细的使用帮助,...

    a tutorial on reporting in java using jasperreports, ireport abd jfreechart.pdf

    3. **创建报告图像**:在报告中插入图表,可以通过JFreeChart生成。例如,可以创建一个饼图来展示不同类别的销售额占比,或者使用条形图来比较不同时间段的销售业绩。 - **饼图**:用于显示部分与整体的关系,特别...

    JasperReports开源报表概述和运行原理.doc

    在实际使用中,开发者可以通过JasperReports提供的API来设计和生成报表,包括定义报表模板、设置数据源、定义样式和交互逻辑等。报表模板通常使用JRXML文件进行设计,这是一种XML格式,描述了报表的结构和样式。然后...

    java 生成图形报表

    Java 生成图形报表是开发过程中常见的一种需求,特别是在数据分析、数据可视化和业务报告等领域。MyEclipse 是一个广泛使用的 Java 开发集成环境,它提供了丰富的工具支持,包括创建和调试 Java 应用程序。在这个...

    java图形报表打印所需JAR

    4. **图形设计工具**: 一些库如JasperReports、BIRT等提供了图形化设计工具,允许开发者通过拖放方式创建报表模板,然后在程序中动态填充数据。 5. **打印服务API**: Java Print Service API允许开发者与本地打印机...

    jasper+ireport+jfreechart导出html.excel.word.pdf

    在这个主题中,我们将深入探讨JasperReports、iReport以及JFreeChart这三款组件如何协同工作来实现报表的多样化导出。 首先,JasperReports是Java平台上的一个报告库,它允许开发者设计复杂的报表,并以多种格式...

    Java水晶报表 JFreeChart使用

    Java水晶报表,通常指的是在Java应用中用于生成报表和图表的工具,这在企业级应用开发中非常常见,尤其在数据分析、数据展示和业务报告方面。JFreeChart是Java领域中一个广泛使用的开源库,它提供了丰富的图表类型,...

    JasperReports 报表类库v3.5.zip

    开发者在使用JasperReports时,需要注意数据源的配置、报表模板的设计、以及如何在Java代码中调用报表引擎生成报表。同时,为了提高性能和用户体验,还需要考虑如何优化数据查询和报表渲染。 总的来说,...

    在struts2中使用JFreeChart

    总的来说,这个主题涵盖了Struts2的Action设计、JFreeChart的图表生成、JasperReports的报表设计与填充,以及如何在Web应用中展示这些内容。通过学习和实践这些知识点,开发者可以提升在Java Web环境中创建交互式...

    JAVA jfreechart绘制报表图片工具类

    在Java编程领域,JFreeChart库是一个非常强大的工具,它允许开发者创建各种复杂的图表和报表,包括线图、柱状图、饼图、散点图等。本示例主要介绍如何利用JFreeChart来绘制报表图片,并提供了一个可以直接使用的demo...

    jasperreports-6.1.1_all_jar.rar资源包下载.zip

    2. **数据处理**:JasperReports可以连接到各种数据库,包括关系型数据库、NoSQL数据库以及通过JDBC访问的数据源。它支持SQL查询,能动态处理数据集,提供数据汇总、分组等功能。 3. **图表生成**:JasperReports...

    基于Java的JasperReports 报表类库v3.5.zip

    总的来说,JasperReports v3.5是一个强大而灵活的报表工具,它为Java开发人员提供了一种有效的方式来生成和呈现数据,无论是在企业级应用还是小型项目中,都有广泛的应用场景。对于想要提升Java应用的数据可视化能力...

    JasperReports & iReport

    - **JFreeChart**:用于在报表中加入统计图表,需要`jfreechart-1.0.0.jar`和`jcommon-1.0.0.jar`。 #### 二、iReport介绍 虽然JasperReports提供了丰富的报表生成功能,但在实际开发过程中,设计复杂的报表布局...

    报表设计基础及JasperReort,JFreeChart简明教程.doc

    在报表设计中,JFreeChart 可以用来创建图形化的数据表现,增加报表的可读性和视觉吸引力。通过 JFreeChart,开发者可以轻松地将数据转换为图表,嵌入到 JasperReport 中,从而创建出包含图形的复杂报表。 【报表...

    JFreeChart饼图、折线图等资料学习

    "jfreechart报表处理"这部分可能涉及到如何将JFreeChart生成的图表整合到报表系统中,例如BIRT、JasperReports等。在报表系统中,JFreeChart可以帮助生成动态、交互式的图表,提升报表的视觉效果和用户体验。 总的...

    Jfreechart简明教程

    通过学习 `CSDN技术中心 iReport 和 Jasperreport 整合开发web报表向导.pdf`,你可以更深入地了解如何在 iReport 中使用 JFreeChart。 ### 9. 示例代码 在 `example` 文件夹中,可能包含了各种使用 JFreeChart ...

    贯通开源WEB图形与报表技术全集—part1

    在IT行业中,Web图形与报表技术是数据可视化和信息呈现的关键组成部分。开源解决方案因其灵活性、可定制性以及成本效益而受到广泛关注。本篇文章将详细探讨标题"贯通开源WEB图形与报表技术全集—part1"所涵盖的知识...

    j2ee报表开发

    在实践中,你会先需要在iReport中创建报表模板,定义数据源(可能是SQL查询),设计报表布局,然后利用JFreeChart来生成图表部分。一旦报表设计完成,你可以将其导出为JasperReport文件(.jrxml或.jasper格式),并...

    jasperreports-1.3.3与iReport1.3.3初级使用

    iReport是JasperReports的图形用户界面(GUI)设计工具,它允许用户通过拖拽方式设计报表模板,无需编写代码。iReport 1.3.3版本提供了更直观的界面和增强的模板编辑功能。 2.2 iReport 1.3.3新特性 在1.3.3版本中...

Global site tag (gtag.js) - Google Analytics