2016-03-03 6 views

ответ

1

Достижение такого рода макет с структура данных вы показали, как правило, осуществляется с помощью подотчет (или список/таблица компонент)

структура будет:

  1. Общий отчет, итерация на всех x включают subreport 1 для y и z, передавая List<Y> list в качестве источника данных.

  2. подотчет 1, итерация на всех y включает в себя subreport 2 для z передавая List<Z> list как источник данных.

  3. Subreport 2, повторить все z.

Чтобы создать источник данных JRBeanCollectionDataSource может служить вам хорошо пример new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{list})

Для достижения этой цели RowSpan использовать атрибут stretchType на reportElement (RelativeToBandHeight или RelativeToTallestObject)

Пример

<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> 

Вам не нравятся подзаголовки, для одной структуры уровня может использоваться компонент <jr:list>, см. samples

0

У нас была такая же проблема, после некоторого поиска мы решили разрешить ее, используя компонент jasper-report html. Что он делает, это позволяет нам добавлять html-контент в отчет. Итак, мы сгенерировали html-контент и сохранили его в базе данных. и вставлял html-данные в отчет о яшме. Надеюсь это поможет.

+1

Компонент HTML работает до тех пор, пока ваш контент не должен разбиваться на несколько страниц. Если вы игнорируете разбиение на страницы и всегда нацеливаете экспорт HTML, вы должны быть в порядке. Но как только мы говорим о форматах PDF или других страниц, компонент HTML начинает демонстрировать свои зубы. Мы фактически создали этот компонент, чтобы продемонстрировать свои ограничения в этих ситуациях. –

Смежные вопросы