SHOEISHA iD

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

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

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

POIを活用してExcelから帳票を作成

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

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

月間売上一覧の作成

 次に同じ「SimpleReportCreatorクラス」を利用して月間売上一覧を作成してみます。この帳票の特徴は明細行数をあらかじめ設定していないことです。実際の明細データ数に応じて、明細行数が追加されていきます。テンプレートシートは以下の図です。

月間売上一覧のテンプレートシート
月間売上一覧のテンプレートシート
  • 入力ファイル名: inputSalesList.xlsx
  • 出力ファイル名: outputSalesList.xlsx

 基本的な処理の流れは「納品書」の作成と変わりません。テンプレートシートを読み込んだ後、ワークシート上の、最上位の行からセルを順番に確認していき、「$変数名」のセルでは実際の値に置き換えを実施します。

 「$変数名[]」の値をあらかじめ設定していたセルではSimpleReportCreator -(13)(14)(15)の説明」の箇所で述べましたが、明細の数などがあらかじめ不明な場合の対応として、繰り返しの開始行だけを用意し、実際の明細データ数に合わせて行とセルを新規に追加で作成していきます。新規に作成した行は、繰り返し処理の開始行に設定されている行の高さを設定します。新規に作成したセルは繰り返し処理の開始行のセルから書式設定などをコピーした後に、置き換えの値を各セルに設定していきます。それでは、繰り返し処理の開始行のセルの書式設定などを新規に作成したセルにコピーしている処理を行っているメソッドをソースから確認しておきましょう。

SimpleReportCreator.javaの続き
// (17)セルの値を別セルにコピーする
public static void copyCell(Cell fromCell, Cell toCell) {

  if (fromCell != null) {

    int cellType = fromCell.getCellType();
    switch (cellType) {
    case Cell.CELL_TYPE_BLANK:
      break;
    case Cell.CELL_TYPE_FORMULA:
      String cellFormula = fromCell.getCellFormula();
      toCell.setCellFormula(cellFormula);
      break;
    case Cell.CELL_TYPE_BOOLEAN:
      toCell.setCellValue(fromCell.getBooleanCellValue());
      break;
    case Cell.CELL_TYPE_ERROR:
      toCell.setCellErrorValue(fromCell.getErrorCellValue());
      break;
    case Cell.CELL_TYPE_NUMERIC:
      toCell.setCellValue(fromCell.getNumericCellValue());
      break;
    case Cell.CELL_TYPE_STRING:
      toCell.setCellValue(fromCell.getRichStringCellValue());
      break;
    default:
    }

    if (fromCell.getCellStyle() != null) {
      toCell.setCellStyle(fromCell.getCellStyle());
    }

    if (fromCell.getCellComment() != null) {
      toCell.setCellComment(fromCell.getCellComment());
    }
  }
}
  • SimpleReportCreator -(17)
  •  セルのタイプ(文字列、真偽値など)に合わせてコピー元からコピー先に値を設定しています。書式設定(セルスタイル)やコメントも設定されている場合には合わせてコピーします。

 テストデータを利用した実行結果を下記に示します。なお、このサンプルの売上一覧では同じ客先への同じ日の売上であっても商品NOが異なれば、別の売上NOで管理しています。

実行結果 1ページ目
実行結果 1ページ目
実行結果 2ページ目
実行結果 2ページ目

 実行結果から分かるように、売上の数だけ行とセルが新規に作成され、値が設定されています。

まとめ

 今回は、簡単ではありますが、Excelファイルで帳票を作成するというテーマに沿ってPOIの活用方法を紹介しました。これまでに紹介した画像を埋め込む処理、計算式を設定する処理なども活かした方法も考えてみると、POIを利用したExcelファイルの操作がより興味深いものになるのではないでしょうか。次回はピボットテーブルとピボットグラフをPOIで生成したデーダと連携させる方法を紹介する予定です。

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

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

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング