DynamicReports与DynamicJasper

时间:2011-02-10 12:06:02

标签: jasper-reports

背景

使用DynamicReports开发Java EE应用程序,到目前为止对我来说已经足够了。最近我找到DynamicJasper,我想知道它是否是更好的选择。

我可以看到DynamicReports可能有更好的support和社区。

问题

  • 您对这两个图书馆的经历是什么?
  • 哪个提供更好的功能?
  • 彼此的优点和缺点是什么?

谢谢!

4 个答案:

答案 0 :(得分:51)

此问题涉及使用JasperReports API(直接或间接)创建报告的几种方法:

DynamicReports(DR)和DynamicJasper(DJ)是两个免费的开源软件工具,可以使用JasperReports API抽象(并简化)常见任务。如果您正在考虑以编程方式开发报告,这些工具可以缩短开发时间。

DR和DJ API包具有以下共同特征:

  • 动态设计
  • 动态列宽
  • 稳定
  • 将iReport模板与代码混合

iReport的

iReport是一个用户界面,它隐藏了直接调用JasperReports方法的复杂性。换句话说,iReport是一种花哨且更友好的方式来开发报告,而不是手动编写Java调用。最终结果是相同的:编译报告(.jasper)文件。

JasperReports API

JasperReports API为程序员提供了一组Java类,让计算机根据业务需求创建报表。例如,API可以开发一个网站,允许用户在报表中选择他们想要的列,然后即时创建报表模板。模板准备好后,用户可以运行报告以查看结果。

iReport缺少的一个功能是能够动态调整列宽。通过直接使用JasperReports API,程序员可以为报告的结果集创建具有最佳列宽的报告模板。

问题是JasperReports API非常复杂,部分内容可能会使用更多文档。

DynamicJasper的

DynamicJasper网站通过JasperReports API注意到以下benefits

  • 自动布局
  • 条形码
  • 清除Excel支持
  • Struts& Grails支持

API示例展示了面向对象原则的良好工作。该网站提供了许多示例,Javadocs的评论很少。 forum比DynamicReports更活跃。

更新:该项目现在位于GitHub。没有其他论坛,但您可以申请Professional Support

DynamicReports

DynamicReports网站通过JasperReports API注意到以下benefits

  • 继承设计

该网站提供了许多示例,但不幸的是Javadocs没有很多评论。此外,forum似乎不如JasperReports或DynamicJasper活跃。

摘要

如果您对DynamicReports感到满意,我会坚持使用它,否则请尝试使用DynamicJasper。

答案 1 :(得分:8)

我刚刚花了几天时间使用和评估上面的不同报告选项,并认为我会加入我的2美分。 我在JRXML,Dynamic Jasper和Dynamic Reports中构建了相同的报告(Profit& Loss)。 我需要一个能够以PDF和Excel格式输出的解决方案,并且能够处理动态列。

这是我发现的:

<强> JRXML

发现使用和不使用iReport非常繁琐。我以前有过使用JRXML的经验,我仍然认为让报告在PDF和Excel中正确显示是一场真正的战斗。我必须通过隐藏和显示某些字段来使用大量的变通方法,这些字段是基于PDF还是excel。动态列处理不当。

动态Jasper

起初我发现Dynamic Jasper非常适合使用,但在对布局进行绝对控制并对报告进行额外控制方面存在一些问题。看来,如果您的报告是基于列的,那么它可以正常工作。我无法弄清楚如何将子报表添加到详细信息部分,并且必须将其添加到组页眉或页脚。

动态报告

在我看来,动态报告是创建动态jasper报告的最灵活,最简单的方法。语法简单直观,我发现启动和运行起来非常快。您可以像Dynamic Jasper一样执行基于列的报告,但也可以选择将组件拖放到报告的标题,详细信息或其他区域。它使用流布局,因此您只需将组件按顺序放入报表和显示中。导出到PDF和Excel是一致的。

动态报告的最后和最重要的好处是支持和更新活动。 DynamicJasper在半年多的时间内没有论坛活动或支持,而DynamicReports不仅积极更新,而且开发人员(Ricardo Mariaca)积极监控论坛并快速回答问题。

答案 2 :(得分:4)

大约一年前,我遇到了DJ。我对DJ的体验是最好的,因为有几个小问题需要解决方法。但是,当项目几乎完成时我发现了这些问题,而且这些解决方法已经存在,我继续使用DJ。

几个月后,我发现了DR,并了解到DR的结构比DJ更好。我的下一个项目肯定会使用DR。

坦率地说,我使用的是DJ 3.1.x系列,并没有尝试任何新版本。我还没有广泛使用DR。

答案 3 :(得分:1)

我是DynamicJasper的忠实粉丝,但最近我切换到DynamicReports 4.0.1(当时,DynamicJasper最新版本是5.0.3)。 凭借在可读性和可用性方面更好的API,DynamicReports为动态设计报告提供了更大的灵活性。它的网站上还有大量的样本可以帮助您快速启动新想法和一些教程。这个The DisTextBox while Disabled with the BackColorDisabled Property set to White也是一个很好的起点。

我开始使用DynamicReports的唯一问题是使用JasperReports和DynamicJasper,我首先用于创建JasperReport(设计),然后将JasperReport对象和数据源一起传递给JasperFillManager.fillReport(...)方法创建JasperPrint对象。 使用JasperPrint,唯一的方法是在使用report()。toJasperPrint()方法创建JasperPrint之前设置数据源。 您可以在源代码中查找组件构建器或任何实用程序的用法,以了解如何使用特殊功能。