1

Jasper レポートを作成するための私の Java コードは

JasperReport report = JasperCompileManager.compileReport(jrxml);
JasperPrint print = JasperFillManager.fillReport(report,parameters, conn);
JasperExportManager.exportReportToPdfFile(print,filename);

サブレポートを使用せずにレポートを作成すると、正常に実行されます。サブレポートを挿入すると、コードが失敗し、例外が表示されます

原因: null

MESSAGEnull

ローカルメッセージnull

Java コードを変更する必要があるかどうか教えてください。

サブレポートを使用するために、この行をどこかで読みました。

JasperReport subreport = (JasperReport)JRLoader.loadObjectFromLocation("ProductReport.jasper");

このコードも使用する必要がありますか? 私は PHP 開発者です。Javaについてあまり知りません。大きなPDFを作成する必要があるため、Jasperレポートを使用しました。このツールは私たちをとても助けてくれました。しかし今、サブレポートを使用する必要がある新しいレポートに行き詰まっています。

4

3 に答える 3

1

私は IREPORT 4.1.3 を使用していましたが、Java コードの jar ファイルは Jasperreports-3.7.6.jar でした。両方のバージョンが同じであることを何度も読みました。そこで試しにjasperreports-4.1.3.jarをダウンロードして使ってみました。これはうまくいきました。現在、サブレポートに問題はありません。

于 2012-07-12T19:21:46.657 に答える
1

これは私にとって非常に混乱しますが、ここに行きます。

まず、.jrxmlまたは.jasperからレポートを取得するかどうかを選択する必要があります。

JRXML を選択した場合は、コンパイルする必要があります。JRXML のコードは次のとおりです。

JasperReport report = JasperCompileManager.compileReport(jrxml);

すでにこれを行っていることに気付くと思います。サブレポートを同じ方法でロードしたい場合は、サブレポートの JRXML ファイルを同じ方法で渡し、これを別の変数に入れることができます。

JasperReport subReport = JasperCompileManager.compileReport(subReportjrxml);

メイン レポート内にサブレポートを配置する必要があるとき、次のように、HashMap 内のパラメーターとして jasper ファイルを渡しました。

Map<String, Object> params = new HashMap<String, Object>;

params.put("SUB_REPORT", subReport);

(fillReport メソッドに「params」を入れますが、subReport をパラメーターとして渡すと、同様に入力する必要があるため、mainReport のみを入力する必要があります)

iReportエディター内で、メインレポートで同じ名前の「SUB_REPORT」のパラメーターを作成しました。これをreportInspector(またはそのようなもの)で実行して、タイプをオブジェクトとして配置できます。

subReportElement を選択してプロパティに移動すると、SubReport Expression というプロパティが表示され、作成したパラメータがそこに配置されます。

于 2012-07-12T21:02:22.077 に答える