最新POIでOffice Open XML形式のExcelファイルを操作 第1回
土田 将人 [著] 2010/02/02 14:00

1 2 →

はじめに

 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)に対象を絞り、下記の予定で紹介していきます。

  • 準備編:POIの概要と環境構築(今回)
  • 基本編:Usermodel APIを利用してExcelファイルを操作
  • 応用編:帳票とグラフ作りに挑戦
  • 番外編:OSSのフレームワークを利用してExcelレポートを簡単作成

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

対象読者

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

POIの概要

 POIはPoor Obfuscation Implementation(不十分で曖昧な実装)を表わしており、旧来(2003以前)のOLE2形式は不十分なものだという皮肉から名付けられています。

 このOLE2形式は、Office独自のファイルフォーマットのため下記のような問題を持っていました。

  • 専用アプリケーションがないと操作できない
  • バージョンアップによって互換性が失われる可能性がある
  • 検索性が落ちる

 これだけ日々の業務で利用・蓄積されたデータが特定の会社の独自フォーマットに基づいているというのは、確かに恐ろしい話です。

 このような背景から、オープンな規格へというニーズに対応したのがOOXML形式への移行です。

OOXML形式

 OOXML形式はECMA(European Computer Manufacturer's Association:欧州電子計算機工業会)を経由してISO/IEC(国際電気標準会議)で標準化されたオープンな規格で、OpenOfficeも対応しています。

 このように利用者にはメリット(その多くは目に見えないものですが)が多いファイルフォーマットの変更ですが、POIやその他のOfficeを扱うライブラリはすぐには対応できず、OOXML形式を扱えない状態が続いていました。

 そんな中、ついに2009年9月にリリースされたPOI 3.5からOOXML形式のファイルもサポート対象になりました。つまりPOIを利用して、拡張子が「xlsx」「docx」といった2007形式のファイルの読み書きが可能になったのです。

 このことは、単なる新たなファイルフォーマットへの対応というだけでなく、扱えるデータ件数の増加やピボット機能の充実など、Excel 2007の機能を利用して、より多くのシーンでPOIが利用できるようになったことを意味します。

 JavaでExcelファイルを操作するAPIとしてはPOIの他に「Java Excel API」が有名ですが、執筆時点(2009年12月)では、Java Excel APIはOOXML形式のファイルをサポートしていません。

 また、POIと言うとExcelのイメージが強いのですが、Excelだけではなく、Word、PowerPoint、Outlook、Visio、PublisherへのJava用APIも提供しています。ただし、Excelへのサポートと比較するとまだまだ十分ではない状況です。下記にPOIのコンポーネント一覧を記載します。

POIコンポーネント一覧
コンポーネント対応アプリケーション
POIFSOLE2 Filesystem
HPSFOLE2 Property Sets
HSSF / XSSFExcel(拡張子XLS/XLSX)
HSLF / XSLFPowerPoint(拡張子PPT/PPTS)
HWPF / XWPFWord(拡張子DOC/DOCX)
HDGFVisio(拡張子VSD)
HPBFPublisher(拡張子PUB)
HSMFOutlook(拡張子MSG)
OpenXML4JOOXML

 本連載ではExcelのみを対象としますので下記コンポーネントを利用します。

  • XSSF:拡張子xlsxのExcelファイルの生成、加工、読み書きに必要です。
  • HSSF:Excel 97以降の拡張子xlsのExcelファイルの生成、加工、読み書きに必要です。
  • POIFS: OLE2形式(xls、docなど)のファイル生成と読込みに必要です。
  • OpenXML4J:ECMA-376 で定義されている、Zipファイル形式を採用しているOpen Packaging Conventions用のピュアJava実装で、OOXML形式(xlsx、docxなど)のファイルを利用する場合に必要です。

 また、version3.5からAPIへの大きな変更点として下記パッケージが導入されています。

  • org.apache.poi.xssf
  • OOXML形式のExcelファイルを操作するために必要なAPIを提供

  • org.apache.poi.ss
  • OOXMLとOLE2形式の両方をサポート可能にする共通インターフェイスAPIを提供


1 2
→
INDEX
Office Open XML形式に対応したPOIの概要と環境構築
Page1
はじめに
対象読者
POIの概要
環境構築
まとめ
プロフィール
土田 将人 ツチダ マサト

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


注目の求人情報
コンサルタント/少数精鋭のベンチャーファーム
・ERPパッケージ導入 ・業務改革(BPR) ・グループ戦略、企業戦略策定 等 ...
ビジネス戦略・事業運営/ソーシャルアプリケーション開発会社
社長と一緒に会社の事業戦略を決め、それに責任を持ち、遂行していくのがミッションです。 ...
プログラマ/通販専門Webコンサル企業
PHPでのプログラミング

(最新日付順)
名前(ゲストの方もコメントをどうぞ):*
アイコン:
なし

内容(テキストのみ1200文字まで):*

投稿規定に同意して

スポンサーサイト

この記事のトラックバックURL: