iReport forMSExcelでレポートを作成したいのですが。
私のレポートには2つのサブレポートが含まれています。各サブレポートを個別のExcelシートに含める必要がありますが、生成されたエクスポートファイルにはすべてのデータが1つのシートに含まれています。
このオプションに必要な設定がわかりません。
iReport forMSExcelでレポートを作成したいのですが。
私のレポートには2つのサブレポートが含まれています。各サブレポートを個別のExcelシートに含める必要がありますが、生成されたエクスポートファイルにはすべてのデータが1つのシートに含まれています。
このオプションに必要な設定がわかりません。
net.sf.jasperreports.export.xls.break.after.rowプロパティを使用して、この問題を解決できます。
このnet.sf.jasperreports.export.xls.break.after.rowプロパティを、レポートの「シート区切り」要素 (たとえば、行またはstaticText要素) に設定できます。
以下のサンプルでは、新しいグループの Excel で新しいシートを生成するためにグループ フッターバンドにline要素を配置しました。
これが私のサンプル、マスターレポートです:
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport ..>
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA["path_to_subreport"]]></defaultValueExpression>
</parameter>
<queryString>
<![CDATA[SELECT id, addressId FROM document ORDER BY addressId]]>
</queryString>
<field name="ID" class="java.lang.Integer"/>
<field name="ADDRESSID" class="java.lang.Integer"/>
<group name="addressGroup">
<groupExpression><![CDATA[$F{ADDRESSID}]]></groupExpression>
<groupHeader>
<band height="53">
<subreport>
<reportElement x="189" y="0" width="200" height="31"/>
<subreportParameter name="addressId">
<subreportParameterExpression><![CDATA[$F{ADDRESSID}]]></subreportParameterExpression>
</subreportParameter>
<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "subreport_new_sheet_for_excel.jasper"]]></subreportExpression>
</subreport>
<staticText>
<reportElement x="0" y="33" width="100" height="20"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font isItalic="true"/>
</textElement>
<text><![CDATA[ID]]></text>
</staticText>
</band>
</groupHeader>
<groupFooter>
<band height="9">
<line>
<reportElement x="1" y="5" width="100" height="1">
<property name="net.sf.jasperreports.export.xls.break.after.row" value="true"/>
</reportElement>
<graphicElement>
<pen lineWidth="0.0"/>
</graphicElement>
</line>
</band>
</groupFooter>
</group>
<detail>
<band height="20" splitType="Stretch">
<textField>
<reportElement x="0" y="0" width="100" height="20"/>
<box>
<pen lineWidth="1.0"/>
</box>
<textElement/>
<textFieldExpression><![CDATA[$F{ID}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
私のサブレポート:
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport ...>
<parameter name="addressId" class="java.lang.Integer" isForPrompting="false"/>
<queryString>
<![CDATA[SELECT city, street FROM address WHERE id = $P{addressId}]]>
</queryString>
<field name="CITY" class="java.lang.String"/>
<field name="STREET" class="java.lang.String"/>
<detail>
<band height="20" splitType="Stretch">
<textField>
<reportElement x="0" y="0" width="258" height="20"/>
<textElement/>
<textFieldExpression><![CDATA["City: " + $F{CITY}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="258" y="0" width="297" height="20"/>
<textElement/>
<textFieldExpression><![CDATA["Street: " + $F{STREET}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
結果は次のようになります。
「break」要素を使用しない場合の結果( net.sf.jasperreports.export.xls.break.after.rowプロパティの行を削除しました) は次のようになります。
詳細については、高度な Excel 機能の投稿を参照してください。