2016-12-23 10 views
-1

こんにちは.jrxmlファイルのこのコードサンプルがあります。Javaからjrxmlファイルにデータを入れる方法は?

<staticText> 
    <reportElement x="69" y="10" width="422" height="180" uuid="52dc00c8-2cd3-466e-bc37-9dde8d5da625"/> 
    <textElement textAlignment="Justified" markup="html"> 
     <font size="11"/> 
     <paragraph lineSpacing="1_1_2"/> 
    </textElement> 
    <text><![CDATA[I HAVE THINGS HERE]]></text> 
</staticText> 

テキストタグには、Javaクラスからの文字列が必要です。それ、どうやったら出来るの?ここ は、Javaコードは次のとおりです。

public static void main(String[] args) { 
    try { 
     JasperReport jasperReport = JasperCompileManager 
      .compileReport("src/main/resources/EJA1.jrxml"); 
     Long now = new Date().getTime(); 
     Map parameters = new HashMap(); 
     JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource()); 
     JasperExportManager.exportReportToPdfFile(jasperPrint, 
      "src/main/resources/reports/teste" + now.toString() + ".pdf"); 
    } catch (JRException e) { 
     e.printStackTrace(); 
    } 
} 

ありがとう!

+0

あなたは、パラメータとTextFieldを使用することができます –

答えて

0

私の元のソリューションを指摘し

おかげでアレックスKを更新しましたがstaticTextのために間違っていました。

要素をstaticTextからtextFieldに変更し、CDATAにJavaクラス名と定数を入れてください。このような何か:

<![CDATA[Foo.Bar]]> 

は、あなたが例えば

public class Foo { 
    public final static String Bar = "bar"; 
    ... 

を持っていると仮定すると、ここで私は、Javaクラスから来ている文字列をレンダリングする方法である:

<pageHeader> 
    <band height="30" splitType="Prevent"> 
     <frame> 
      <reportElement style="pageHeader" stretchType="RelativeToTallestObject" x="0" y="0" width="940" height="30"/> 
      <textField isStretchWithOverflow="true"> 
       <reportElement style="pageSubHeaderText" stretchType="RelativeToTallestObject" x="0" y="0" width="940" height="30"/> 
       <textElement textAlignment="Left"/> 
       <textFieldExpression class="java.lang.String"><![CDATA[SomeHelper.someMethod()]]></textFieldExpression> 
      </textField> 
     </frame> 
    </band> 
</pageHeader> 
関連する問題