动态配置和生成 BIRT 报告

Posted

技术标签:

【中文标题】动态配置和生成 BIRT 报告【英文标题】:Configuring & Generating BIRT Reports Dynamically 【发布时间】:2012-07-07 11:32:41 【问题描述】:

通过观看 2 部分的 YouTube 视频和阅读 BIRT 手册,我对它的理解是工作流程是这样的:

在 Eclipse 中创建新报表 使用 BIRT 报表设计器(Eclipse 插件)设计报表 使用数据源(JDBC 驱动程序和数据库)和数据集(特定表)填充报告 生成/导出/打印报告

尽管这个工具看起来很酷,但我找不到 任何 文档让我相信这是一个 Java 工具而不是 Eclipse-唯一的工具(意思是,它有一个 Java API 并且可以与 Java 应用程序交互,而不是一个纯 Ecipe 插件,它需要来自 Eclipse IDE 的手动/人工交互。

具体来说,我想确认 BIRT 可以或不能执行以下操作:

以编程方式配置报告(布局、UI 小部件放置、数据源/集等);也就是说,就像 JasperReport API 具有生成 JRXML 的 iReport 设计器一样,BIRT 也是如此吗? 通过 Java API 开始“生成”报告,从而实时读取数据并填充报告,然后可以将报告发送出去或存储在文件系统中 为同一报告创建 html 和 PDF 版本

【问题讨论】:

您是否看过“集成和扩展 BIRT”一书,尤其是第 4 部分“如何将 BIRT 集成到应用程序中”? 见:vogella.com/tutorials/EclipseBIRT/article.html 有一个 API 可以帮助直接从 Java 生成 BIRT 报告:mvnrepository.com/artifact/net.sf.automatic-report-generator/…。 v1.0 与 Log4j 一起使用,v1.1 与 Log4J2 一起使用。另外,请在此处查看 sourceforge 的页面:sourceforge.net/projects/automatic-report-generator 【参考方案1】:

回答您的问题:

    是的。 BIRT 可能没有 JasperReports 强大,但它可以实现大部分常见的需求。 BIRT 设计器在 JasperReports 中生成类似于 JRXML 的 .rptdesign 文件。

    关于您的问题:几乎所有事情都可以在 BIRT 中以编程方式实现。 BIRT Report Engine APIs 是您开始使用您提到的所有功能的最佳来源。它为每个功能提供了很好的示例。

    不确定。 BIRT 通常从 DB 中获取预先保存的数据并生成报告。您可以在一些外部库的帮助下看到实时数据表示(可能是闪存图表的形式)(查看this 线程和this 示例是否有帮助)。但我不知道将实时数据转换为 PDF/HTML 报告的直接方法。你必须找到一些技巧。

    当然可以。请参阅 API。具体来说,irendertask。

获取更多信息/答案的来源:

    网站上有几个example reports。快速浏览它们可能会给您更多的见解。

    有关讨论和疑难解答,请参阅 eclipse community forum 和 BIRTExchange(BIRT 用户大量使用)。

    BIRT: A Field Guide to Reporting 是一本很棒的书。我自己也时不时用过。

【讨论】:

【参考方案2】:

我可以确认您有兴趣使用的两个 BIRT 组件(BIRT 设计引擎和报告引擎)将在纯 Java 上下文中工作,并且可以在没有 Eclipse 的情况下进行部署。我已经部署了 BIRT 报告以用完独立的 Tomcat 服务器以及 Pentaho BI 服务器,并使用 shell 脚本在命令行中执行报告定义(不涉及 Eclipse)。

回答您的问题:

    以编程方式配置报告:使用Design Engine API。我不熟悉 Jasper Reports API,因此无法评论 BIRT 方法是否相似,但example code 提供了一个很好的说明。特别要注意lines 120-133在报表中添加和操作小部件,以及line 136如何调用saveAs来保存报表设计文件。

    实时生成报告:使用Report Engine。 IRunAndRenderTask 的示例代码一开始可能对您最有用,但引擎具有将报表的数据处理(提取和聚合)与呈现和分页分离的能力。我相信这些示例侧重于从 Servlet 运行报告,但很容易从 servlet 容器逻辑中提取该逻辑。

    同时创建 HTML 和 PDF 版本:通过 IRenderTask 在报表引擎中轻松处理。一旦您完成了所有其他设置工作,更改输出格式以生成 PDF 与 HTML 是一件令人愉快的事情。根据我的经验,它确实有效。

我发现从一个非常简单的 Java 类(改编自 very old code here)开始运行从命令行调用的测试报告很有用。

【讨论】:

【参考方案3】:

您可以使用报告引擎 API 来配置报告: http://www.eclipse.org/birt/phoenix/deploy/reportEngineAPI.php#ireportrunnable

您可以通过在 url 中设置变量来生成报告或以编程方式使用报告引擎来创建报告的 HTML 或 PDF 版本:

http://www.eclipse.org/birt/phoenix/deploy/reportEngineAPI.php#irendertask

我们使用 Eclipse 来构建和设计报告。报表引擎被部署为reports_war 的一部分,war 有自己的数据库连接。我们基于 Java 的 Web 应用程序使用 url 与报告模板进行交互(变量在 url 中设置)。

BIRT Exchange 是了解更多信息的好地方

【讨论】:

【参考方案4】:

Birt和jasper在设计上没有太大区别,只是birt有eclipse插件。

1)可以,你可以通过java程序或者方法来配置。

2)是的,这是可能的。

3)是的,再次以不同格式导出您的报告很容易通过 java 进行 birt 报告

【讨论】:

【参考方案5】:

BIRT 是一个很好且简单的报告生成工具。

您可以在 BIRT 中设计您的页面。 - 创建数据集,并可以使用 jsp 标签库将值从您的网页传递到您的 BIRT 设计。 BIRT 满足您的所有要求。它很容易使用。首先我使用 jasper,然后尝试使用水晶 atlast Birt 输出。 tag lib

我参考此链接在我的网页中查看 BIRTVIEWVER。 PDF 创建在 BIRT 中非常完美。您也可以生成 PDF、DOC、HTML。

您可以将值传递给您的 birt 。在创建数据集时,可以选择传递参数。

要做到这一切,你必须在你的 Eclipse BIRT Report designer 中安装 BIRTREPORT

【讨论】:

以上是关于动态配置和生成 BIRT 报告的主要内容,如果未能解决你的问题,请参考以下文章

BIRT将两个数据集中的字段报告/组合到一个动态文本框中

LabelHandle 上的 canShrink 属性不适用于使用 BIRT 的 PDF 和 EXCEL 报告

birt 报告可以调用另一个 birt 报告吗?

BIRT - 动态替换标签内容

我需要在 ASP.NET 中编写一个动态报表生成器,我应该从哪里开始?

BIRT 中如何根据参数动态拼接 SQL