「Java/帳票/JasperReports5.0 CSVデータソースからPDF出力」の編集履歴(バックアップ)一覧はこちら

Java/帳票/JasperReports5.0 CSVデータソースからPDF出力」(2013/01/06 (日) 10:25:08) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

* Java/帳票/JasperReports5.0 CSVデータソースからPDF出力 * ポイント - テンプレートファイルにCSVデータソース用の特別な設定は不要 -- CSV用の設定をするとプレビュー表示が使えます。 --- 裏ワザあり。 -- 普通のデータソースと同じく、フィールド名を作って、帳票でフィールド名を使うようにするだけです。 - DBのコネクションの代わりに、JRCsvDataSourceを使います。 * 裏ワザ + テンプレートファイル(例 JasperSample3.jrxml)と同じディレクトリに + 拡張子だけがcsvのファイル(例 JasperSample3.csv)かつ、一行目がフィールド名のファイルを作成した場合 + CSV用のデータソースの設定とかしなくてもプレビューできてしまう。 裏ワザでもなんでもなく、周知のテクニックだったらごめんなさい。 * 前回と同じテンプレート &ref(JasperSample3_1.png) * 出力結果のPDF &ref(JasperSample3_2.png) - 上記の通り、パラメータとデータベースから取得した値が埋め込まれています。 - 今回は「ADDRESS」テーブルには3件データを作ったため、氏名と住所が3件出力されています。 * 1.CSVファイル作成 #highlight(){{ "id","firstname","lastname","city","street" "1","ローラ","スチール","北海道","稚内市なんとかかんとか" "2","スーザン","キング","青森県","八戸市なんとかかんとか" "3","アンネ","ミラー","岩手県","盛岡市なんとかかんとか" }} - 前回使ったADDRESSテーブルをそのままCSVファイルにしてみました。 -- 文字コードはShift_JIS、改行コードはCR+LF、どちらもwindows標準。 -- 一行目をカラム名ヘッダとしてあります。 * 2.テンプレートの作り方 - 基本的に前回と同じで、以下のフィールドが作られていれば大丈夫です。 -- firstname -- lastname -- street -- city * 3.Javaソースの変更点 #highlight(java){{ import java.util.*; import net.sf.jasperreports.engine.*; import net.sf.jasperreports.engine.data.*; // JasperReports5.0用パラメータ、データソース(CSV)を使ってPDF出力 // 参考 http://foolprogrammer.blogspot.jp/2012/04/itext217_28.html // http://thinkit.co.jp/free/tech/4/4/1.html public class JasperSample3 { public static void main(String[] args) { // テンプレートXMLファイルのパス String templatePath = "./JasperSample3.jrxml"; // 出力するPDFファイルのパス String destPath = "./JasperSample3.pdf"; try { // (1)テンプレートXMLのコンパイル JasperReport jasperReport = JasperCompileManager .compileReport(templatePath); // (2)パラメータの生成 Map<String, Object> paramMap = new HashMap<String, Object>(); paramMap.put("ReportTitle", "ちゃぱてぃ商店従業員名簿"); // (3)データソースの生成 ★ 変更 ★ JRCsvDataSource ds = new JRCsvDataSource("./JasperSample3.csv"); ds.setUseFirstRowAsHeader(true); // (4)データの動的バインド JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, paramMap, ds); // ★変更★ // (5)PDFへ出力 JasperExportManager.exportReportToPdfFile(jasperPrint, destPath); } catch (Exception ex) { ex.printStackTrace(); } } } }} - 前回との変更点は、データソースの生成がデータベースのコネクション取得から、JRCsvDataSourceに変わっています。 -- 文字コード改行コードがプラットフォーム標準で、一行目がカラム名ヘッダの場合、データソースの取得は以下の最低限の設定となります。 * 3-1.文字コード改行コードがプラットフォーム標準で、一行目がカラム名ヘッダの場合 #highlight(java){{ JRCsvDataSource ds = new JRCsvDataSource("./JasperSample3.csv"); ds.setUseFirstRowAsHeader(true); }} * 3-2.文字コードがUTF-8の場合 #highlight(java){{ JRCsvDataSource ds = new JRCsvDataSource("./JasperSample3.csv", "UTF-8"); ds.setUseFirstRowAsHeader(true); }} * 3-3.文字コードがUTF-8、改行コードがLFの場合 #highlight(java){{ JRCsvDataSource ds = new JRCsvDataSource("./JasperSample3.csv", "UTF-8"); ds.setUseFirstRowAsHeader(true); ds.setRecordDelimiter("\r"); }} * 3-3.文字コードがUTF-8、改行コードがLF、一行目がカラム名ヘッダではない場合 #highlight(java){{ JRCsvDataSource ds = new JRCsvDataSource("./JasperSample3.csv", "UTF-8"); ds.setRecordDelimiter("\r"); ds.setColumnNames(new String[] { "id", "firstname", "lastname", "city", "street" }); }} * サンプルダウンロード - &ref(JasperSample3.java) - サンプルプログラム - &ref(JasperSample3.jrxml) - JasperReportsテンプレート - &ref(JasperSample3.pdf) - 出力結果のPDF - &ref(JasperSample3.csv) - 出力結果のPDF * コメント #pcomment(reply)
* Java/帳票/JasperReports5.0 CSVデータソースからPDF出力 * ポイント - テンプレートファイルにCSVデータソース用の特別な設定は不要 -- CSV用の設定をするとプレビュー表示が使えます。 --- 裏ワザあり。 -- 普通のデータソースと同じく、フィールド名を作って、帳票でフィールド名を使うようにするだけです。 - DBのコネクションの代わりに、JRCsvDataSourceを使います。 * 裏ワザ + テンプレートファイル(例 JasperSample3.jrxml)と同じディレクトリに + 拡張子だけがcsvのファイル(例 JasperSample3.csv)かつ、一行目がフィールド名のファイルを作成した場合 + CSV用のデータソースの設定とかしなくてもプレビューできてしまう。 裏ワザでもなんでもなく、周知のテクニックだったらごめんなさい。 * 前回と同じテンプレート &ref(JasperSample3_1.png) * 出力結果のPDF &ref(JasperSample3_2.png) - 上記の通り、パラメータとデータベースから取得した値が埋め込まれています。 * 1.CSVファイル作成 #highlight(){{ "id","firstname","lastname","city","street" "1","ローラ","スチール","北海道","稚内市なんとかかんとか" "2","スーザン","キング","青森県","八戸市なんとかかんとか" "3","アンネ","ミラー","岩手県","盛岡市なんとかかんとか" }} - 前回使ったADDRESSテーブルをそのままCSVファイルにしてみました。 -- 文字コードはShift_JIS、改行コードはCR+LF、どちらもwindows標準。 -- 一行目をカラム名ヘッダとしてあります。 * 2.テンプレートの作り方 - 基本的に前回と同じで、以下のフィールドが作られていれば大丈夫です。 -- firstname -- lastname -- street -- city * 3.Javaソースの変更点 #highlight(java){{ import java.util.*; import net.sf.jasperreports.engine.*; import net.sf.jasperreports.engine.data.*; // JasperReports5.0用パラメータ、データソース(CSV)を使ってPDF出力 // 参考 http://foolprogrammer.blogspot.jp/2012/04/itext217_28.html // http://thinkit.co.jp/free/tech/4/4/1.html public class JasperSample3 { public static void main(String[] args) { // テンプレートXMLファイルのパス String templatePath = "./JasperSample3.jrxml"; // 出力するPDFファイルのパス String destPath = "./JasperSample3.pdf"; try { // (1)テンプレートXMLのコンパイル JasperReport jasperReport = JasperCompileManager .compileReport(templatePath); // (2)パラメータの生成 Map<String, Object> paramMap = new HashMap<String, Object>(); paramMap.put("ReportTitle", "ちゃぱてぃ商店従業員名簿"); // (3)データソースの生成 ★ 変更 ★ JRCsvDataSource ds = new JRCsvDataSource("./JasperSample3.csv"); ds.setUseFirstRowAsHeader(true); // (4)データの動的バインド JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, paramMap, ds); // ★変更★ // (5)PDFへ出力 JasperExportManager.exportReportToPdfFile(jasperPrint, destPath); } catch (Exception ex) { ex.printStackTrace(); } } } }} - 前回との変更点は、データソースの生成がデータベースのコネクション取得から、JRCsvDataSourceに変わっています。 -- 文字コード改行コードがプラットフォーム標準で、一行目がカラム名ヘッダの場合、データソースの取得は以下の最低限の設定となります。 * 3-1.文字コード改行コードがプラットフォーム標準で、一行目がカラム名ヘッダの場合 #highlight(java){{ JRCsvDataSource ds = new JRCsvDataSource("./JasperSample3.csv"); ds.setUseFirstRowAsHeader(true); }} * 3-2.文字コードがUTF-8の場合 #highlight(java){{ JRCsvDataSource ds = new JRCsvDataSource("./JasperSample3.csv", "UTF-8"); ds.setUseFirstRowAsHeader(true); }} * 3-3.文字コードがUTF-8、改行コードがLFの場合 #highlight(java){{ JRCsvDataSource ds = new JRCsvDataSource("./JasperSample3.csv", "UTF-8"); ds.setUseFirstRowAsHeader(true); ds.setRecordDelimiter("\r"); }} * 3-3.文字コードがUTF-8、改行コードがLF、一行目がカラム名ヘッダではない場合 #highlight(java){{ JRCsvDataSource ds = new JRCsvDataSource("./JasperSample3.csv", "UTF-8"); ds.setRecordDelimiter("\r"); ds.setColumnNames(new String[] { "id", "firstname", "lastname", "city", "street" }); }} * サンプルダウンロード - &ref(JasperSample3.java) - サンプルプログラム - &ref(JasperSample3.jrxml) - JasperReportsテンプレート - &ref(JasperSample3.pdf) - 出力結果のPDF - &ref(JasperSample3.csv) - 出力結果のPDF * コメント #pcomment(reply)

表示オプション

横に並べて表示:
変化行の前後のみ表示: