Если в JasperReports создать Crosstab с двумя группировками колонок, то ширина первой группировки в отчёте будет расширяться, чтобы охватить все колонки от группировки второго уровня, но надпись будет обрезаться по границе первой колонки. Я долго искал, как это исправить, но в конце концов нашёл решение: нужно добавить атрибут headerPosition="Stretch" в первую группировку.
Вот так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
... <columnGroup name="staff_position_descr1" height="20" headerPosition="Stretch"> <bucket class="java.lang.String"> <bucketExpression><![CDATA[$F{staff_position_descr}]]></bucketExpression> </bucket> <crosstabColumnHeader> <cellContents mode="Opaque" style="Crosstab 1_CH"> <textField isStretchWithOverflow="true"> <reportElement x="0" y="0" width="60" height="20" uuid="686035b6-fa47-4d89-a6d1-97d582d39a8a"/> <textElement textAlignment="Center" verticalAlignment="Middle"> <font fontName="DejaVu Sans"/> </textElement> <textFieldExpression><![CDATA[$V{staff_position_descr1}]]></textFieldExpression> </textField> </cellContents> </crosstabColumnHeader> <crosstabTotalColumnHeader> <cellContents/> </crosstabTotalColumnHeader> </columnGroup> ... |
Причём этот атрибут нельзя добавить в визуальном редакторе JasperStudio. Его нужно прописывать вручную в XML.