【问题标题】:Creating Reports with BIRT使用 BIRT 创建报告
【发布时间】:2011-01-03 17:06:45
【问题描述】:

我查看了 BIRT 的基本教程,我觉得 BIRT 高度以数据库为中心。我的情况完全不同。

我必须从不同类型的数据源生成报告。要发布的数据是动态创建的(这是另一个模块的工作),我有复杂的数据结构来保存数据(如地图列表)。我没有模板,因为这完全取决于用户交互。但是数据结构包含创建每个报表所需的所有数据,即列名、行数和行的值。

我真的很困惑如何从这种数据源创建报告。 BIRT 只支持 POJO。有什么方法可以将地图指定为数据集,将 Java 类指定为数据源?或者如果没有,有什么替代方案?

【问题讨论】:

    标签: java eclipse birt


    【解决方案1】:

    您有几种不同的选择:

    1) 使用脚本数据源并通过应用程序上下文传递您的列表/地图结构。在您的报告中,您将在初始化事件中执行以下操作:

    var myData = reportContext.getApplicationContext().get("myPassedInValue");
    reportContext.setGlobalVariable("data", myData);
    

    然后,在脚本数据集的 fetch 事件中,根据需要遍历列表/映射。

    2) 创建一个显式处理您的数据结构的 ODA 插件。这是更多的工作,但它使设计报告更容易。

    3) 使用 BIRT 的设计引擎 API 以编程方式构建报告和数据。

    【讨论】:

      【解决方案2】:

      我认为 BIRT 是目前更多与数据无关的工具之一。任何报告工具都将以数据为中心;数据是您试图呈现给用户的内容。 BIRT(正如您所指出的)广泛支持 RBDMS 和非 RDBMS 源(如 POJO)。

      鉴于您的应用程序驱动的数据收集,我认为 POJO 在这里是合乎逻辑的。问题不在于访问数据; BIRT 可以通过 POJO 轻松完成此操作(BIRT Exchange 对此有大量引用)。这个问题与您打算如何使用报告本身中的数据有关。

      报告架构中最重要的依赖项是您用来向用户传达数据的各种控件的能力,以便以有意义的方式应用收集的数据。控件(图表、表格等)关心两件事:数据类型和列名(出于访问原因)。如果控件要从数据集中请求一个元素并将其成功应用到生成的画布上,这两件事是至关重要的。

      第一个列名问题可以通过创建通用列名并在运行时组装数据集时简单地从 POJO 中填充这些列来轻松处理。关于如何跨数据集和组件层管理列,需要有一些一致性和逻辑性,但这是可行的。您也不能在运行时向数据集添加列,但您可以尝试在设计时构建最大数量的列并在运行时填充所需的内容。

      数据类型的第二个问题可能更具限制性,需要在实施之前进行更多规划。如果您将数据集中的第一个元素命名为Val1(与上一段保持一致)并将其键入为字符串,则每次填充数据集时它必须保持为字符串,否则您将看到运行-时间错误。如果您没有对数据进行大量计算,则可以在运行时将 POJO 转换为数据集时通过数据类型转换来克服这一问题。

      所以有很多方法可以做你想做的事。实施需要对数据集的结构和利用数据集的控件的布局进行大量规划。请记住,报表生命周期中的每个事件都可以被脚本覆盖,从而为您提供很大的影响力和灵活性。

      最后,如果您想在运行时使用强类型数据集执行所有这些操作,您可以。您将需要使用 BIRT API 来生成带有代码的报告。您可以在 WYSIWYG Eclipse 设计器中执行的任何操作都可以使用代码中的大量 API 来完成。也可以查看 BIRT Exchange。我建议您研究报告库(BIRT 的另一个重要功能),将这些复杂的项目放入可重用的投资组合中,这样您只需一次完成大量此类繁重的工作。

      【讨论】:

        【解决方案3】:

        您可能需要做的是根据您的数据使用代码构建您的报告。你没有足够详细地描述你的情况,无法肯定地说出来。从代码构建应该只在极少数情况下完成,因为任何更改都需要更改程序。但是,如果您的控制需求超出了任何报告工具的范围,那么请查看该方法。如果您确实采用这种方法,那么您可以使用 iText 生成 PDF,使用 OpenXML 生成 DOCX/XLSX/PPTX 等。

        话虽如此,你能从你的 POJO 中创建一个 XML 文件吗?这是一个额外的步骤,但如果可以的话,您可以将它提供给大多数报告系统,只要您的 XML 架构是不变的。这将是一种更好的方法,因为您可以在报告工具中保留报告布局、格式和逻辑。为您节省大量时间并使修改变得更加容易。

        如果您确实走 XML 路线,请查看Windward Reports。 (免责声明,我是 Windward 的首席技术官。)使用 Windward,您可以在 Microsoft Word、Excel 或 PowerPoint 中设计报告 - 这使得报告设计和编辑变得快速而轻松。

        对于一般信息,我建议java-reportsreporting-software。一个适合您的系统的关键是设计工具自然适合您的风格 - 所以尝试几个。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多