Java 如何在Jasper报告中创建树结构?

Java 如何在Jasper报告中创建树结构?,java,jasper-reports,Java,Jasper Reports,我需要在报告中显示分层数据结构 像这样的 我的数据结构是: class X { List<Y> list; } class Y { List<Z> list } X类 { 名单; } Y类 { 列表 } 这是如何在jasper report中实现的?我们遇到了同样的问题,在搜索了一段时间后,我们决定使用jasper report html组件解决它。它所做的是,它允许我们在报告中添加html内容。所以,我们生成html内容并将其存储在数据库中。并在j

我需要在报告中显示分层数据结构

像这样的

我的数据结构是:

class X
{
    List<Y> list;
}

class Y
{
   List<Z> list
}
X类
{
名单;
}
Y类
{
列表
}

这是如何在jasper report中实现的?

我们遇到了同样的问题,在搜索了一段时间后,我们决定使用jasper report html组件解决它。它所做的是,它允许我们在报告中添加html内容。所以,我们生成html内容并将其存储在数据库中。并在jasper报告中插入html数据。希望这有帮助

通常通过使用子报表(或列表/表格组件)来使用您显示的数据结构实现这种布局

结构将是:

  • 主报告,在所有
    x
    上迭代,包括
    y
    子报告1
    z
    列表作为数据源传递

  • 子报告1,在所有
    y
    上迭代,包括
    z
    子报告2
    ,将
    列表作为数据源传递

  • 子报表2,迭代所有
    z

  • 要生成数据源,示例
    new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{list})

    要实现该行span,请使用
    reportElement
    上的
    stretchType
    属性(相对带宽高度或相对高度对象)

    范例

    <textField>
        <reportElement stretchType="RelativeToTallestObject" x="0" y="0" width="100" height="20" uuid="bf6b550c-f37d-4e10-b8dd-1d91c4e6905a"/>
        <textElement verticalAlignment="Middle"/>
            <font size="12"/>
        </textElement>
        <textFieldExpression><![CDATA[$F{x}]]></textFieldExpression>
    </textField>
    
    
    

    您不喜欢子报表,对于一级结构,可以使用
    组件,请参见只要内容不需要跨多个页面,HTML组件就可以工作。如果您忽略分页并始终以HTML导出为目标,则应该可以。但是,当我们一谈到PDF或其他面向页面的格式时,HTML组件就开始露出牙齿。实际上,我们创建该组件是为了证明它在这些情况下的局限性。