0

Jasper Reportsの練習用に小さな Java プログラムを作成しました。

以下は、レポートを生成して PDF にエクスポートする Java プログラムです。

public class BaseReporter {
    public static void main(String[] args)  {

        try { 
        InputStream inputStream = BaseReporter.class.getResourceAsStream("/reports/helloworld.jasper");

        DataBeanMaker dataBeanMaker = new DataBeanMaker();
        ArrayList<DataBean> dataBeanList = dataBeanMaker.addDataBean();

        JRBeanCollectionDataSource JRbeancollectiondatasource = new JRBeanCollectionDataSource(dataBeanList);

        Map<String, Object> parameters = new HashMap<String, Object>();
        parameters.put("Created By", "xxx");
        parameters.put("StylePath", "d:/Learn-WS/Jasper/src/reports/jr.jrtx");


        // Export to PDF
        JasperPrint jasperPrint = JasperFillManager.fillReport(inputStream, parameters, JRbeancollectiondatasource);
        JasperExportManager.exportReportToPdfFile(jasperPrint, "d:/Learn-WS/Jasper/src/reports/helloworld.pdf");

       System.out.println("report process completed ....");
        }
        catch(Exception e) {
            System.out.println(e.getMessage());
        }
    }
}

そして、私のパッケージ構造は

project
       src
          com
             BaseReport.java
             DataBean.java
             DataBeanMaker.java
          reports
             helloworld.jasper
             helloworld.jrxml
             jr.jrtx
          jr.properties

jr.propertiesファイルに、レポートで使用するプロパティを追加しました。report.name="テスト レポート"

jasperReport タグの helloworld.jrxml ファイルにリソース バンドル名を含め、resourceBundle="jr"という名前の属性を付けました。

レポートでリソース バンドル プロパティを次のように呼び出しました。

<title>
        <band height="30">
            <staticText>
                <reportElement uuid="6fbe7eb7-04cd-4c03-bc6e-b2cda3026d3b" mode="Opaque" x="0" y="3" width="535" height="23"/>
                <textElement textAlignment="Center">
                    <font size="14" isBold="true"/>
                </textElement>
                <text><![CDATA[$R{report.name}]]></text>
            </staticText>
        </band>
    </title>

しかし、リソース バンドル プロパティが読み込まれておらず、レポートに適切に配置されていません。

よろしくお願いします。

4

1 に答える 1

1

レポート ファイルにあるリソース バンドルの解決策を見つけました。レポート ファイル *.jrxml fileでは、タグtextの代わりに、親タグtextFieldと共にタグ textFieldExpression を使用しており、うまく機能しています。

<title>
        <band height="30">
            <textField>
                <reportElement uuid="ec4f36de-cf2b-4575-a585-3e860ad8faec" mode="Opaque" x="199" y="0" width="125" height="20" forecolor="#0000FF"/>
                <textElement textAlignment="Center">
                    <font size="10"/>
                </textElement>
                <textFieldExpression><![CDATA[$R{report.name}]]></textFieldExpression>
            </textField>
        </band>
    </title>
于 2013-06-12T18:16:22.607 に答える