Jasperreports極簡単チュートリアルとピットガイド
3338 ワード
JasperreportでJavaBeanをデータソースとしてhtmlレポートを出力する
ツール:
Jasperreports.JAr javaプログラムからレポートを出力するapi
Ireport-3.7.0レポートテンプレートを作成するソフトウェア
手順:
1 JavaBeanが表示するフィールドを準備し、beanのフィールドがnameとageであると仮定し、beanの値をlist 1にロードするTest test1 = new Test();
Test test2 = new Test();
Test test3 = new Test();
list1.add(test1);
list1.add(test2);
list1.add(test3);
いくつかのmapを準備していくつかのフィールドone two threeを読み込みlist 2に再読み込みmap1.put("one","I'm");
map2.put("two","so");
map3.put("three","pretty");
list2.add(map1);
list2.add(map2);
list2.add(map3);
List 1とlist 2はhtmlレポートにデータソースとして出力されます
2空白のreportファイルhelloを新規作成します.jrxmlは、mapに対応するパラメータParametersとjavabeanに対応するフィールドFieldを作成します.
3 ParametersとFieldに対応するコンポーネントの作成
注意:ParametersのコンポーネントP{"one"},P{"two"},P{"three"}はtitle brandに,FieldのコンポーネントF{"name"},F{"age"}はtable内容としてDetail brandに,tableの列ヘッダはcolumn brandに置かれる(static textコンポーネントで文字を入力).FieldとParametersの違いは本人がまだ検討していないが、現在知っている用法の違いは、Parametersが唯一のパラメータ展示、すなわちmap中のキー値対に用いられることである.Fieldは、表の内容の表示、すなわち、複数の列のデータ、すなわちlistのjavabeanを表示するために使用されます.
4 hello.jrxmlをhelloにコンパイルする.JAsperは、私たちのプログラムに必要なファイルを取得します.
5簡単に言えば、list 1、list 2、helloが必要です.jasper
6コールList jaspers = new ArrayList<>();
for (int i = 0; i < list2.size(); ++i) {// map
JasperPrint jasperPrint = JasperFillManager.fillReport(new File(hello.jasper), list2.get(i), new JRBeanCollectionDataSource(list1));
jaspers.add(jasperPrint);
}
JRHtmlExporter exporter = new JRHtmlExporter();
//
exporter.setParameter(JRHtmlExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.TRUE);
exporter.setParameter(JRHtmlExporterParameter.JASPER_PRINT_LIST, jaspers);
exporter.setParameter(JRHtmlExporterParameter.OUTPUT_WRITER, out);
exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, characterEncoding);
exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML, "
");
exporter.setParameter(JRHtmlExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
exporter.setParameter(JRHtmlExporterParameter.SIZE_UNIT, "pt");
exporter.exportReport();// HTML
ピットガイド
1低バージョンireportではjasperファイルをjrxmlファイルに変換できません
2低バージョンのireportでは、高バージョンのjrxmlファイルを開くことができますが、高バージョン(4.6以降)のireportではjrxmlファイルを作成する際にuuidプロパティ(表示可能)が追加されるため、uuidプロパティをすべて削除する必要があります.低バージョンのireportでは、高バージョンのjrxmlファイルと互換性があります.
3 ClassDefFound/ClassNotFound....groove....CompilerExceptionエラーは、jrxmlファイル(実はxml)の最初の行に、language=「groove」という属性があります.これはデフォルトの動作です.javaプログラムで呼び出すときにlanguage=「java」に変更するか、直接この属性を削除する必要があります.このエラーはjavaのコンパイルと実行に連絡して考えてみてください.大体の考えでは、jrxmlファイルのコンパイル環境(ireport)が実行環境(javaプログラム)と一致しません.JAvaプログラムは、実行時にjrxmlファイルのコンパイル時のクラスを見つけることができません.要するにlanguageプロパティがキーです.
4 languageプロパティを変更して再コンパイルした後もエラーが発生する場合があります.インタフェースに戻ってコンポーネントを少し移動することができます.それからコンパイルすればいいです.反応が遅いと理解できます.
続行するかもしれない...
Test test1 = new Test();
Test test2 = new Test();
Test test3 = new Test();
list1.add(test1);
list1.add(test2);
list1.add(test3);
map1.put("one","I'm");
map2.put("two","so");
map3.put("three","pretty");
list2.add(map1);
list2.add(map2);
list2.add(map3);
List jaspers = new ArrayList<>();
for (int i = 0; i < list2.size(); ++i) {// map
JasperPrint jasperPrint = JasperFillManager.fillReport(new File(hello.jasper), list2.get(i), new JRBeanCollectionDataSource(list1));
jaspers.add(jasperPrint);
}
JRHtmlExporter exporter = new JRHtmlExporter();
//
exporter.setParameter(JRHtmlExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.TRUE);
exporter.setParameter(JRHtmlExporterParameter.JASPER_PRINT_LIST, jaspers);
exporter.setParameter(JRHtmlExporterParameter.OUTPUT_WRITER, out);
exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, characterEncoding);
exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML, "
");
exporter.setParameter(JRHtmlExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
exporter.setParameter(JRHtmlExporterParameter.SIZE_UNIT, "pt");
exporter.exportReport();// HTML