Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

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

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

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2010/05/18 14:00

 JavaからMicrosoftのドキュメントを操作するためのAPI「POI」の最新版では、Office 2007形式のファイルも扱えるようになりました。本稿では、POIを活用してExcelから「納品書」と「月間売上一覧」を作成する方法を紹介します。

目次

はじめに

 POIはJavaからMicrosoftのドキュメントを操作するためのAPIで、2007年6月からApache Software Foundationのトップレベルプロジェクトに格上げされました。オープンソースとして提供されているので誰でも無償で利用することができます。

 なぜ初期のリリース後、7年以上も経過し、多くの情報が存在するPOIを今回あらためて取り上げることにしたかと言うと、2009年9月リリースのVersion 3.5でOffice Open XML形式(以降、OOXML形式)への対応という大きな変更が加わったからです。

 分かりやすくいうと2007形式のExcel(xlsx)やWord(docx)のファイルも扱えるようになったということです。

 本連載では、POIの中からExcelを操作するコンポーネント(HSSF/XSSF)に対象を絞り、下記の予定で紹介していきます。

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

 また、本連載はOOXML形式のExcelファイルを基本として進めますが、Excel 2003以前のMicrosoft OLE2複合ドキュメント形式(以降OLE2形式)への対応方法についても随時紹介していきます。

対象読者

  • JavaでExcelファイルを操作したい方

納品書の作成

 前回までに、POIが提供するAPIについていくつか紹介してきました。今回は「Excelファイルで帳票を作成する」というテーマを通して、POIの活用方法をより詳細に紹介していこうと思います。作成する帳票は「納品書」と「月間売上一覧」です。納品書とは売り手から買い手に商品を納める時に、納品の明細を記入して渡す伝票です。今回作成する納品書は下記になります。

作成する納品書
作成する納品書
  • 入力ファイル名: inputDeliveryNote.xlsx
  • 出力ファイル名: outputDeliveryNote.xlsx

 納品書には「納入先の宛先」や「納入する商品」のように作成するたびに値が変更される箇所と、「納品書の構成」や「納入者の宛先」のように変更のない箇所があります。変更がない箇所は、POIを通して直接作るのではなく、あらかじめテンプレートシートに作成しておきPOIで読み込むことにします。用意したテンプレートシートは以下の図です。

納品書のテンプレートシート
納品書のテンプレートシート

 納入者の宛先のように、納品書の作成ごとに値が変動しない箇所はテンプレートシートに直接書き込んでいます。また、今回作成する納品書では1つの納品書に記載できる明細の数を「最大で11個まで」という固定形式にしています。

 一方、伝票番号のように納品書の作成ごとに値が変動する箇所には「$変数名」の形式でセルに値を設定しています。さらに、納入する商品情報のように作成ごとに値と表示する数が変動する箇所には「$変数名[]」の形式でセルに値をあらかじめ設定しておきます。

 これらの情報をもとにして、POIを通して実際の値に置き換えるセルの位置や置き換え方法を判別できるようにしておきます。「合計金額(税込)」などの金額を設定する箇所はセルに計算式を設定するのではなく、プログラムで計算して3桁ごとにカンマを付加し、設定済みの値を該当セルに設定する仕様とします。

 もう1つ、今回のサンプルでのテンプレートシートの利用方法として説明を加えておきます。納入先が1つの場合には、テンプレートシートにPOIを通して置き換えの値を直接設定していきます。納入先が複数の場合は、複数の納入先への納品書を一度に出力可能にするために、テンプレートシートを納入先分シートコピーして納品書を作成することにします。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

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

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

バックナンバー

連載:最新POIでOffice Open XML形式のExcelファイルを操作
All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5