动态配置和生成 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 报告的主要内容,如果未能解决你的问题,请参考以下文章
LabelHandle 上的 canShrink 属性不适用于使用 BIRT 的 PDF 和 EXCEL 报告