0

JasperReportに問題があります。iReportを介して*.jrxmlファイルを生成しました。そこで私はいくつかのフィールドを見つけました。Javaアプリケーションでこれらのフィールドを設定したいのですが、機能しませんでした。

私のコードは次のようになります

JasperReport report;
    JasperPrint print;

    HashMap<String, Object> parameters = new HashMap<String, Object>();

    parameters.put("logoPath", "\\logo.jpg");
    parameters.put("companyName", "Company Name");

    try {
        report = JasperCompileManager
                .compileReport("JRXML\\Template.jrxml");

        for (JRField field : report.getFields()) {
            System.out.println(field.getName() + "|"
                    + field.getValueClassName());
        }

        print = JasperFillManager.fillReport(report, parameters,
                new JREmptyDataSource());
        JasperExportManager.exportReportToPdfFile(print,
                "\\temp\\Example.pdf");

        JasperViewer.viewReport(print);

    } catch (Exception e) {
        // TODO Auto-generated catch block
        Logger.getLogger(Example1.class.getName()).log(Level.ALL,
                e.getLocalizedMessage());

        e.printStackTrace();
    }

フィールドは*.jrxmlファイルで指定されます。

ご協力いただきありがとうございます

4

1 に答える 1

3

パラメータとフィールドを混同しています。パラメータはとして定義され<parameter name="companyName" class="java.lang.String" isForPrompting="false">、フィールドはとして定義され<field name="companyName" class="java.lang.String"/>ます。jrxmlで会社名をパラメーターに変換すると、機能するはずです。

このチュートリアルから

パラメーター

パラメータは、レポート入力操作に渡されるオブジェクト参照です。これらは、通常はデータソースで見つけることができないレポートエンジンデータを渡すのに非常に役立ちます。

田畑

レポートフィールドは、データソースからレポート生成ルーチンにデータをマップする唯一の方法を表します。レポートのデータソースがResultSetの場合、すべてのフィールドはResultSetオブジェクトの対応する列にマップする必要があります。つまり、マップする列と同じ名前で、互換性のあるタイプである必要があります。

元の回答:

Logo.jpgのFileResolverを使用します。これは、Jasperがファイルの場所を解決するために使用します。

FileResolver fileResolver = new FileResolver() {
@Override
public File resolveFile(String fileName) {
 URI uri = null;
 try {
uri = new URI(this.getClass().getResource("/" + fileName).getPath());
 } catch (URISyntaxException e) {
 }
return new File(uri.getPath());
}
};

HashMap<String, Object> parameters = new HashMap<String, Object>();

parameters.put("logoPath", "\\logo.jpg");
parameters.put("companyName", "Company Name");
parameters.put("REPORT_FILE_RESOLVER", fileResolver);
...
print = JasperFillManager.fillReport(report, parameters,
new JREmptyDataSource());
于 2012-12-20T12:07:24.627 に答える