我有一个Jasper报告,其中有一个详细信息部分,详细信息部分内部是数据库中打印的单个字段。因此,如果我的查询返回100行,我会得到100行,这会产生大约10页长的报告,因为10个记录适合页面。
有没有办法可以在列中打印该字段,以便我可以在页面上显示40条记录,而不仅仅是10条记录? (通过4列10列)
答案 0 :(得分:8)
您可以配置多列报告。如果您使用的是iReport,请右键单击报告名称上的报告检查器,然后选择页面格式。在列部分中,将列从1
增加到4
,如果需要,请配置 Space 以定义列之间的距离。如果单击报告,还可以在属性面板中选择打印订单。
在报表设计器中,您可以在详细信息区域的第一列中拖动字段。
JRXML中添加的属性位于<jasperreports ...
标记:
columnCount="4"
:4列printOrder="Horizontal"
:填写订单是水平的。附上JRXML以供进一步参考:
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="report8" language="groovy" columnCount="4" printOrder="Horizontal" pageWidth="595" pageHeight="842" columnWidth="138" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="5e2835cc-bc36-4f77-8631-08a8deaa28d7">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<queryString>
<![CDATA[select 'A' as field]]>
</queryString>
<field name="field" class="java.lang.String"/>
<detail>
<band height="20" splitType="Stretch">
<textField>
<reportElement uuid="76707cdd-7dbe-477e-b3a4-38f9ba3bd003" x="0" y="0" width="136" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$F{field}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>