带有动态列的 Birt Report

Birt Report with Dynamic Column

我想用来自 xml 数据源的动态列数创建一个 Birt table 报告。我该怎么做?

在搜索时我读到可以使用脚本数据源来完成,但我找不到关于如何将脚本数据源与 xml 数据源一起使用的示例或文档。

我也尝试过交叉表,它似乎只有在存在某种形式聚合时才有效(它不适用于字符串)。

这是一个示例 xml:

    <table>
    <row>
       <name></name>
       <question_1>answer<question_1>
       <question_2>answer<question_2>
    </row>
<!-- or it can be like this. I can control how the xml is generated-->
    <row>
       <name></name>
       <question>answer<question>
       <question>answer<question>
    </row>
    </table>

不同 xml 的问题数量不同,但一个 xml 中的行相同。我希望数据以这样的表格形式出现

name | question_1 | question_2

您可以执行以下操作:

  • 将列表添加到您的报告
  • 在列表中 Header 添加 1 列和一些行的网格
  • 在此网格的每一行中添加行的标题
  • 在此网格中,将宽度设置为文本的大小
  • 在列表详细信息中添加另一个 1 列和所需行数的网格
  • 在第二个网格中,将您想要的数据集拖到每个单元格中
  • 将第二个网格的常规 >​​ 显示 属性 设置为内联(而不是块)
  • 在第二个网格中,将宽度设置为文本的大小

正如您在问题中提到的,我认为最简单的方法是交叉表。事实上,数据立方体使用数字度量,但我们可以通过创建一个虚拟度量来解决它,其中字段 "answer" 作为基础数据立方体中的表达式。将度量类型设置为 "String" 并将聚合函数设置为 "FIRST" ,然后交叉表应在单元格

中显示每个问题的答案