スポンサー広告 - スポンサーサイト

--/--/-- (--) --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【プログラミング】JAVA - POI備忘録 其の参

2011/06/04 (土) 21:51

だいぶ前にメモしてあったものを記録。

POI 3.7でのお話。続き。
Office2007が登場し、エクセルの新しいファイル形式が誕生しました。
それに伴いPOIもバージョンアップし、新・旧両方のファイル形式に対応しています。
結局それぞれに対応したクラスが別々に存在するわけですが、
何と共通のインターフェースが存在しており、
これを使うことによってファイル形式の違いを意識せずに開発できるようになっているようです。

要するに、
List list = new ArrayList();
とかするのと同じですね。

Google先生に聞いても古い情報ばっかりであまり情報が得られなかったので、実際に弄ってみますた。

/*
* 例外処理とかストリームの扱い(開けたり閉めたり)は省略
*/

// 既に存在するファイルを読み込む場合
Workbook book = WorkbookFactory.create(new FileInputStream("fileName"));

// 新規作成の場合は形式に合ったクラスを使って作成する
Workbook hssfBook = new HSSFWorkbook();
Workbook xssfBook = new XSSFWorkbook();
どうやらファイル形式を識別する術があるようです。
org.apache.poi.ss.usermodel.WorkbookFactory クラスは、
POIFSFileSystem.hasPOIFSHeader(InputStream)
POIXMLDocument.hasOOXMLHeader(InputStream)
の両メソッドでファイル形式を検査している模様です。
中身で何をやっているかまでは見ていませんが(汗)

取得したオブジェクト
org.apache.poi.ss.usermodel.Workbook
もインターフェース。
この後は
org.apache.poi.ss.usermodel.Sheet
org.apache.poi.ss.usermodel.Row
org.apache.poi.ss.usermodel.Cell
org.apache.poi.ss.usermodel.CellStyle
org.apache.poi.ss.usermodel.Font
等のインターフェースを駆使してエクセルの捜査を行っていくわけですね。
どうやらこの辺の共通部品が
org.apache.poi.ss.usermodel.*
のクラス群のようです。

形式に依存する処理を行いたい場合は、対応する形式の方のクラスにキャストして使えばよいでしょう。


関連記事

コメントの投稿

非公開コメント

検索フォーム
RSSリンクの表示
カレンダー
03 | 2017/04 | 05
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -
月別アーカイブ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。