You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Java API与Pentaho在.prpt文件中绘制图表?

在Pentaho报表中添加柱状图的实现方案

一、修改PRPT模板(核心步骤)

用Pentaho Report Designer打开你项目中的test2.prpt,按以下步骤添加柱状图:

  • 从左侧工具栏拖拽柱状图组件到报表布局的合适区域。
  • 绑定数据源:
    1. 选中图表,右侧属性面板切换到Data标签页,选择数据集为default(和你Java代码中factory.setQuery("default", query)对应)。
    2. 设置X轴:选择字段ID(对应HQL返回的sh.activityAsset.id)作为分类维度。
    3. 设置Y轴:选择字段countHistory(对应HQL的统计值)作为数值指标,因为HQL已经完成分组统计,直接选择字段即可,无需额外聚合。
  • 调整样式:在Appearance标签页设置图表标题、轴标签、颜色等,确保在PRD预览中能正常显示图表。
  • 保存模板,替换项目中原有test2.prpt文件。

二、验证Java代码数据传递

你的现有代码已经完成HQL数据集和报表的绑定,只需确认两点:

  • HQL返回的字段名(ID、countHistory)和PRPT模板中图表绑定的字段名完全一致(大小写敏感)。
  • createReportDefinition方法中,HQLDataFactory正确设置了default查询,确保报表能获取到数据。

现有核心代码片段参考:

private MasterReport createReportDefinition(String reportUrl, EntityManager manager, String query, Map<String, Object> parametersMap) {
    try {
        final ClassLoader classloader = this.getClass().getClassLoader();
        final URL reportDefinitionURL = classloader.getResource(reportUrl);
        ResourceManager managerRes = new ResourceManager();
        managerRes.registerDefaults();
        Resource res = managerRes.createDirectly(reportDefinitionURL, MasterReport.class);
        MasterReport report = (MasterReport) res.getResource();
        DataRow dr = new ParameterDataRow(parametersMap.keySet().toArray(new String[0]), parametersMap.values().toArray());
        report.getParameterValues().putAll(dr);
        
        Session session = (Session) manager.getDelegate();
        session = session.getSessionFactory().openSession();
        StaticSessionProvider sessionProvider = new StaticSessionProvider(session);
        HQLDataFactory factory = new HQLDataFactory(sessionProvider);
        factory.setQuery("default", query); // 对应模板中的default数据集
        report.setDataFactory(factory);

        return report;
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return null;
}

三、测试与问题排查

调用接口生成PDF后,若图表未显示,按以下顺序排查:

  1. 先在PRD中预览报表,确认模板本身能正常渲染图表,排除模板配置问题。
  2. 检查项目依赖:确保Pentaho相关依赖包(如pentaho-reporting-engine-classic-core、pentaho-reporting-libraries-pdf)版本完整,无缺失。
  3. 验证数据:打印list变量确认HQL返回的数据格式和数量符合预期,确保数据能传递到报表。

内容的提问来源于stack exchange,提问作者Shima Nikkhooo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 23:12:07