2011-11-22 7 views
5

Napisałem specyfikację jaspra do generowania pliku PDF ze źródła danych tabeli. To działa dobrze. Teraz muszę dodać jeszcze kilka kolumn, a raport nie wygląda dobrze. Mam teraz na myśli, jeżeli mogę wycisnąć w nazwach kolumn w wielu wierszach, takich jak ten poniżejJak mieć nazwę kolumny obejmującą wiele linii w generowaniu raportu Jaspera

Konserwacja Data

do

Konserwacja

Data

Czy to możliwe, aby osiągnąć to w Jasper?

Pozdrawiam, Paul

+0

Czy masz na myśli użycie API JasperReports? –

+0

Brak użycia interfejsu API. Mam jrxml napisany i używam źródła danych tabeli do generowania pliku PDF. – paulhudson

+0

Możesz obejrzeć mój fragment jrxml w moim poście –

Odpowiedz

3

Czy Twoje nazwy kolumn są zakodowane na stałe? Czy wystarczy zmienić "Datę konserwacji" na "Konserwacja \ nData", aby uzyskać powrót karetki?

Uwaga: nie można dodać znaku "\ n" do elementu Static Text. Musisz użyć pola tekstowego. Na szczęście możesz kliknąć prawym przyciskiem myszy element Static Text w iReport i przekształcić go w pole tekstowe.

Myślę, że to może rozwiązać problem. Jeśli nie, być może trzeba będzie wyjaśnić sprawę.

+0

Tak, moje nazwy kolumn tabeli są zakodowane w pliku jrxml. Oto ten sam kod, który mam – paulhudson

+0

Perfect. W takim przypadku dodanie "\ n" powinno być tym, czego potrzebujesz. – mdahlman

+0

Nie wiem, jak sformatować następujący fragment kodu xml \t \t \t \t \t \t \t paulhudson

1

Jeśli używasz JasperReports API można użyć tej próbki:

//Detail 
    band = new JRDesignBand(); 
    band.setHeight(40); 

    JRDesignStaticText staticText = new JRDesignStaticText(); 
    staticText.setX(0); 
    staticText.setY(0); 
    staticText.setWidth(60); 
    staticText.setHeight(20); 
    staticText.setMode(ModeEnum.OPAQUE); 
    staticText.setHorizontalAlignment(HorizontalAlignEnum.LEFT); 
    staticText.setStyle(boldStyle); 
    staticText.setText("ID: "); 
    staticText.getLineBox().getLeftPen().setLineWidth(1); 
    staticText.getLineBox().getTopPen().setLineWidth(1); 
    staticText.getLineBox().setLeftPadding(10); 
    band.addElement(staticText); 

    textField = new JRDesignTextField(); 
    textField.setX(60); 
    textField.setY(0); 
    textField.setWidth(200); 
    textField.setHeight(20); 
    textField.setHorizontalAlignment(HorizontalAlignEnum.LEFT); 
    textField.setStyle(normalStyle); 
    expression = new JRDesignExpression(); 
    expression.setValueClass(java.lang.Integer.class); 
    expression.setText("$F{Id}"); 
    textField.setExpression(expression); 
    textField.getLineBox().getTopPen().setLineWidth(1); 
    textField.getLineBox().getRightPen().setLineWidth(1); 
    textField.getLineBox().setLeftPadding(10); 
    band.addElement(textField); 

    staticText = new JRDesignStaticText(); 
    staticText.setX(0); 
    staticText.setY(20); 
    staticText.setWidth(60); 
    staticText.setHeight(20); 
    staticText.setMode(ModeEnum.OPAQUE); 
    staticText.setHorizontalAlignment(HorizontalAlignEnum.LEFT); 
    staticText.setStyle(boldStyle); 
    staticText.setText("Name: "); 
    staticText.getLineBox().getLeftPen().setLineWidth(1); 
    staticText.getLineBox().getBottomPen().setLineWidth(1); 
    staticText.getLineBox().setLeftPadding(10); 
    band.addElement(staticText); 


    textField = new JRDesignTextField(); 
    textField.setStretchWithOverflow(true); 
    textField.setX(60); 
    textField.setY(20); 
    textField.setWidth(200); 
    textField.setHeight(20); 
    textField.setPositionType(PositionTypeEnum.FLOAT); 
    textField.setStyle(normalStyle); 
    expression = new JRDesignExpression(); 
    expression.setValueClass(java.lang.String.class); 
    expression.setText("$F{FirstName} + \" \" + $F{LastName}"); 
    textField.setExpression(expression); 
    textField.getLineBox().getRightPen().setLineWidth(1); 
    textField.getLineBox().getBottomPen().setLineWidth(1); 
    textField.getLineBox().setLeftPadding(10); 
    band.addElement(textField); 

    ((JRDesignSection) jasperDesign.getDetailSection()).addBand(band); 

Rezultatem będzie:

enter image description here

ten jest prawie identyczny jak ten fragment pliku jrxml:

<detail> 
    <band height="40" splitType="Stretch"> 
     <staticText> 
      <reportElement x="0" y="0" width="60" height="20"/> 
      <box leftPadding="10"> 
       <topPen lineWidth="1.0"/> 
       <leftPen lineWidth="1.0"/> 
      </box> 
      <textElement/> 
      <text><![CDATA[ID: ]]></text> 
     </staticText> 
     <textField> 
      <reportElement x="60" y="0" width="200" height="20"/> 
      <box leftPadding="10"> 
       <topPen lineWidth="1.0"/> 
       <rightPen lineWidth="1.0"/> 
      </box> 
      <textElement/> 
      <textFieldExpression><![CDATA[$F{Id}]]></textFieldExpression> 
     </textField> 
     <staticText> 
      <reportElement x="0" y="20" width="60" height="20"/> 
      <box leftPadding="10"> 
       <leftPen lineWidth="1.0"/> 
       <bottomPen lineWidth="1.0"/> 
      </box> 
      <textElement/> 
      <text><![CDATA[Name: ]]></text> 
     </staticText> 
     <textField> 
      <reportElement x="60" y="20" width="200" height="20"/> 
      <box leftPadding="10"> 
       <bottomPen lineWidth="1.0"/> 
       <rightPen lineWidth="1.0"/> 
      </box> 
      <textElement/> 
      <textFieldExpression><![CDATA[$F{FirstName} + " " + $F{LastName}]]></textFieldExpression> 
     </textField> 
    </band> 
</detail>