SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

最新POIでOffice Open XML形式のExcelファイルを操作

OSSのフレームワークを利用してExcelレポートを簡単作成

最新POIでOffice Open XML形式のExcelファイルを操作 第6回

  • X ポスト
  • このエントリーをはてなブックマークに追加

ExCella Reportsで請求書の作成

 本連載の第4回では、POIを直接操作することで「納品書」や「月間売上一覧」を作成する方法を紹介しましたが、今回はExCella Reportsのサンプルプログラムを実行して請求書を作成することで、ExCella Reportsの特徴を確認してみましょう。サンプルプログラムで作成する請求書は下記になります。

作成した請求書
作成した請求書
  • 入力ファイル名:請求書テンプレート.xls
  • 出力ファイル名:請求書サンプル.xls

 第4回で「納品書」や「月間売上一覧」を作成した時もテンプレートシートを利用しましたが、ExCella Reportsの場合もテンプレートシートを利用します。固定で表示する文言や、フォント、罫線、セルの背景色などは使い慣れたExcelで直接設定できます。今回利用する請求書のテンプレートは以下になります。

請求書のテンプレートシート
請求書のテンプレートシート

 第4回で利用したテンプレートシートとの主な違いは以下の点です。

1. 用意されているタグの種類が豊富

 納品書を作成したときは、値が変動する箇所には「$変数名」の形式でセルに値を設定し、値と表示するレコード数が変動する箇所には「$変数名[]」の形式で値を設定しておくようにしました。

 一方、ExCella Reportsでは値が変動する箇所には、用途によって次のタグが利用することができます。

用意されているタグ
タグ 説明
$ タグを値に置換する
$I タグを画像に置換する
$R[] タグを行方向に繰返置換する
$C[] タグを列方向に繰返置換する
$BR[] タグに指定された範囲を行方向に繰返置換する
$BC[] タグに指定された範囲を列方向に繰返置換する
$SUM[] タグに指定された値を合計する
$REMOVE[] タグ行を削除する

 請求書作成のサンプルでは3種類のタグ(「$」「$I」「$R[]」)を利用しています。また、事前に用意されているタグでは用途を満たせない場合は、拡張してカスタムタグを作成することもできます。

2. 1つのセル内に固定文字列とタグを複数配置することが可能

 請求書のテンプレートシートの例では「請求日」と「${請求日付}」が1つのセルに配置されています。変換処理が実行されるとタグの部分だけ値が変換され、固定文字列と共に表示されます。また、1つのセル内に複数の「${パラメータ名}」タグが配置されている場合でも適切に変換処理が実行されます。

3. 繰返行の下にあるセルも同時に行移動が可能

 納品書を作成したときは、記載できる明細の数を「最大で11個まで」という固定形式にすることで、明細欄の下に配置した合計金額を記載するセルが明細行に上書きされてしまうことがないように制御していました。

 一方、ExCella Reportsでは行方向に繰返置換を実行したい箇所に「$R[]」タグを設定しておけば、その下のセルも繰返しの分だけ同時に下方向に行移動させることも可能です。サンプルでは「小計」「値引」「消費税額(5%)」「合計」の箇所は、データの数だけ繰返しが実行される明細行の下に配置されていますが、明細のデータ数に合わせて、それらの配置は下方向に行移動されていることが、作成した請求書のイメージで確認できます。

次のページ
ExCella Reportsの構成

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
最新POIでOffice Open XML形式のExcelファイルを操作連載記事一覧

もっと読む

この記事の著者

土田 将人(ツチダ マサト)

株式会社ビーブレイクシステムズにて業務システムのパッケージソフト(MA-EYES)の製品開発に従事。英語や会計等、システム開発以外のスキルを活かして官公庁やメーカ系のシステム開発で活躍中。少し前に、パッケージソフトMA-EYESの開発を通して「POI」を知り尽くし、勢い余って本稿の執筆に至る。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5255 2010/07/05 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング