我是新的Pentaho报表工具。我有以下问题:
使用Pentaho Report Designer创建报表时,会输出扩展名为.prpt的报表文件。之后我在互联网上找到了一个例子,其中使用以下代码以html格式显示报告:|
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ResourceManager manager = new ResourceManager();
manager.registerDefaults();
String reportPath = "file:" +
this.getServletContext().getRealPath("sampleReport.prpt");
try {
Resource res = manager.createDirectly(new URL(reportPath), MasterReport.class);
MasterReport report = (MasterReport) res.getResource();
HtmlReportUtil.createStreamHTML(report, response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
报告已成功打印。因为我们在这里没有指定任何数据源信息,我认为.prpt文件中包含了这些信息。
如果那不是Jasper是比Pentaho更好的报告工具,因为当我们显示Jasper报告时,我们也必须提供数据源详细信息,这样我们的报告就是灵活的,不受任何特定数据库的约束。
答案 0 :(得分:2)
不。数据源可以存储在prpt中,但也可以传递给报告。通常的方法是简单地使用JNDI,以便您可以将相同的报告部署到多个测试/开发/生产环境。
你可能会从论坛上获得更好的答案。 forums.pentaho.org
答案 1 :(得分:1)
PRPT文件通常包含运行报告所需的所有信息。通过修改从ResourceManager返回的MasterReport对象,可以提供自己的数据源。
但是,我还必须看到有效的用例,其中这种操作实际上是有意义的。要在运行时为SQL数据源提供连接信息,通常使用Web应用程序或J2EE服务器的JNDI子系统。
在Pentaho BI-Server上运行的所有报告的99.99% NOT 需要手动替换要运行的数据源。剩下的0.01%是古代报告引擎版本的遗留报告。