如何将jrtx文件中定义的特定外部样式应用于iReport?

时间:2012-12-17 05:47:59

标签: java jasper-reports

我使用Jasper Reports生成报告。我已经定义了自己的样式来应用于jrtx文件中的报告,我通过从Java程序传递参数来调用jrtx文件。它适用于嵌入在jrtx文件中的单一样式。我有3种不同的风格申请所有报告。我在jrtx文件中定义了所有3种样式。我的问题是只有jrtx中定义的第一个样式才会被应用。如何使所有3种不同的风格适用于报告的不同部分?

我的StyleTemplate1.jrtx

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jasperTemplate PUBLIC "-//JasperReports//DTD Template//EN" "http://jasperreports.sourceforge.net/dtds/jaspertemplate.dtd">

<jasperTemplate>
    <style name="ColumnHeader" isDefault="true" fontSize="12" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false"/>
    <style name="ColumnText" fontSize="12" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false"/>
    <style name="TitleHeader" fontSize="14" isItalic="true" isUnderline="true" isStrikeThrough="true"/>
</jasperTemplate>

我的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="OPRS_Corporations" language="groovy" pageWidth="895" pageHeight="792" whenNoDataType="AllSectionsNoDetail" columnWidth="750" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" isIgnorePagination="true">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <template><![CDATA[$P{TEMPLATE_FILE}]]></template>
    <parameter name="CompanyName" class="java.lang.String"/>
    <parameter name="Address1" class="java.lang.String"/>
    <parameter name="Email" class="java.lang.String"/>
    <parameter name="FaxNo" class="java.lang.String"/>
    <parameter name="TelNo" class="java.lang.String"/>
    <parameter name="WebAddress" class="java.lang.String"/>
    <parameter name="pCorpCode" class="java.lang.String"/>
    <parameter name="pCorpName" class="java.lang.String"/>
    <parameter name="LogoBaseDIR" class="java.lang.String"/>
    <parameter name="pLoginName" class="java.lang.String"/>
    <parameter name="pRoleName" class="java.lang.String"/>
    <parameter name="SUBREPORT_DIR" class="java.lang.String"/>
    <parameter name="pEmail" class="java.lang.String"/>
    <parameter name="TEMPLATE_FILE" class="java.lang.String"/>
    <queryString>
        <![CDATA[SELECT

          CORP_ID
    , CORP_CODE
    , HEAD_OFFICE
    , CORP_NAME
    , EMAIL
    , STATE_CODE
    , CREATED_BY
    , CREATED_DATE
    , MODIFIED_BY
    , MODIFIED_DATE

FROM OPRS_CORPORATION]]>
    </queryString>
    <field name="CORP_ID" class="java.math.BigDecimal"/>
    <field name="CORP_CODE" class="java.lang.String"/>
    <field name="HEAD_OFFICE" class="java.lang.String"/>
    <field name="CORP_NAME" class="java.lang.String"/>
    <field name="EMAIL" class="java.lang.String"/>
    <field name="STATE_CODE" class="java.lang.String"/>
    <field name="CREATED_BY" class="java.math.BigDecimal"/>
    <field name="CREATED_DATE" class="java.sql.Timestamp"/>
    <field name="MODIFIED_BY" class="java.math.BigDecimal"/>
    <field name="MODIFIED_DATE" class="java.sql.Timestamp"/>
    <filterExpression><![CDATA[($P{pCorpCode}.isEmpty()
    || $F{CORP_CODE}.equals( $P{pCorpCode} )
) &&
($P{pCorpName}.isEmpty()
    || $F{CORP_NAME}.contains( $P{pCorpName} )
)]]></filterExpression>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="81" splitType="Stretch">
            <subreport>
                <reportElement x="1" y="1" width="854" height="36"/>
                <parametersMapExpression><![CDATA[$P{REPORT_PARAMETERS_MAP}]]></parametersMapExpression>
                <subreportParameter name="CompanyName">
                    <subreportParameterExpression><![CDATA[$P{CompanyName}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="Address1">
                    <subreportParameterExpression><![CDATA[$P{Address1}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="Email">
                    <subreportParameterExpression><![CDATA[$P{Email}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="FaxNo">
                    <subreportParameterExpression><![CDATA[$P{FaxNo}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="TelNo">
                    <subreportParameterExpression><![CDATA[$P{TelNo}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="WebAddress">
                    <subreportParameterExpression><![CDATA[$P{WebAddress}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="LogoBaseDIR">
                    <subreportParameterExpression><![CDATA[$P{LogoBaseDIR}]]></subreportParameterExpression>
                </subreportParameter>
                <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                <subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "OPRS_Header.jasper"]]></subreportExpression>
            </subreport>
            <staticText>
                <reportElement mode="Transparent" x="201" y="37" width="407" height="20"/>
                <textElement textAlignment="Center">
                    <font size="14" isBold="true" isUnderline="false"/>
                </textElement>
                <text><![CDATA[CORPORATIONS]]></text>
            </staticText>
            <textField evaluationTime="Report" pattern="dd/MM/yyyy HH:mm:ss" isBlankWhenNull="true">
                <reportElement x="719" y="59" width="136" height="20"/>
                <textElement>
                    <font size="12" isBold="true"/>
                </textElement>
                <textFieldExpression class="java.util.Date"><![CDATA[new Date()]]></textFieldExpression>
            </textField>
            <textField pattern="dd/MM/yyyy HH.mm.ss">
                <reportElement x="529" y="59" width="190" height="20"/>
                <textElement textAlignment="Right">
                    <font size="12" isBold="true"/>
                </textElement>
                <textFieldExpression class="java.lang.String"><![CDATA[$P{pLoginName}+"("+$P{pRoleName}+") / "]]></textFieldExpression>
            </textField>
            <line>
                <reportElement x="0" y="57" width="855" height="1"/>
            </line>
        </band>
    </title>
    <columnHeader>
        <band height="18" splitType="Stretch">
            <staticText>
                <reportElement x="186" y="0" width="233" height="17"/>
                <textElement>
                    <font size="12" isBold="true"/>
                </textElement>
                <text><![CDATA[CORP NAME]]></text>
            </staticText>
            <staticText>
                <reportElement x="420" y="0" width="130" height="17"/>
                <textElement>
                    <font size="12" isBold="true"/>
                </textElement>
                <text><![CDATA[HEAD OFFICE]]></text>
            </staticText>
            <staticText>
                <reportElement x="738" y="0" width="118" height="17"/>
                <textElement>
                    <font size="12" isBold="true"/>
                </textElement>
                <text><![CDATA[STATE CODE]]></text>
            </staticText>
            <staticText>
                <reportElement x="48" y="0" width="136" height="17"/>
                <textElement>
                    <font size="12" isBold="true"/>
                </textElement>
                <text><![CDATA[CORP CODE]]></text>
            </staticText>
            <staticText>
                <reportElement x="2" y="0" width="45" height="18"/>
                <textElement>
                    <font size="12" isBold="true"/>
                </textElement>
                <text><![CDATA[S.No]]></text>
            </staticText>
            <staticText>
                <reportElement x="551" y="0" width="186" height="17"/>
                <textElement>
                    <font size="12" isBold="true"/>
                </textElement>
                <text><![CDATA[EMAIL]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="20" splitType="Stretch">
            <textField isBlankWhenNull="true">
                <reportElement x="48" y="0" width="136" height="20"/>
                <textElement>
                    <font size="12"/>
                </textElement>
                <textFieldExpression class="java.lang.String"><![CDATA[$F{CORP_CODE}]]></textFieldExpression>
            </textField>
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement stretchType="RelativeToTallestObject" x="186" y="0" width="233" height="20"/>
                <textElement>
                    <font size="12"/>
                </textElement>
                <textFieldExpression class="java.lang.String"><![CDATA[$F{CORP_NAME}]]></textFieldExpression>
            </textField>
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement x="420" y="0" width="130" height="20"/>
                <textElement>
                    <font size="12"/>
                </textElement>
                <textFieldExpression class="java.lang.String"><![CDATA[$F{HEAD_OFFICE}]]></textFieldExpression>
            </textField>
            <textField isBlankWhenNull="true">
                <reportElement x="752" y="0" width="103" height="20"/>
                <textElement>
                    <font size="12"/>
                </textElement>
                <textFieldExpression class="java.lang.String"><![CDATA[$F{STATE_CODE}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="0" y="2" width="47" height="18"/>
                <textElement>
                    <font size="12"/>
                </textElement>
                <textFieldExpression class="java.lang.Integer"><![CDATA[$V{REPORT_COUNT}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="551" y="1" width="186" height="19"/>
                <textElement>
                    <font size="12"/>
                </textElement>
                <textFieldExpression class="java.lang.String"><![CDATA[$F{EMAIL}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

任何想法都表示赞赏。

由于

1 个答案:

答案 0 :(得分:1)

我认为你应该能够单独设置一个元素,至少在iReport中是这样的(http://www.jaspersoft.com/ireport-and-jasperserver-creating-chart-themes-and-styles-tutorial#createStyles) 。我现在没有人可以测试,但是我记得 - 所以只需在iReport中设计报告(在那里做样式部分),然后用JasperReports完成剩下的工作。