POI とは
Java API To Access Microsoft Format Files
な API ライブラリ.
Excel を読むには POI の中の HSSF を使うようだ.と言っても,全て一つの jar ファイルに収まっているので,気にしない.
さて,POI で Excel を読むのに必要なのは HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell 辺り.全て org.apache.poi.hssf.usermodel パッケージに属する.それぞれの意味は Excel と同じ.
- Workbook が一つの Excel ファイル.
- HSSFSheet がシート (Excel の下の方のタブ)
- HSSFRow がシートの中の一行
- HSSFCell が一つのマス
んーで,まぁ,読み込むには
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream("hoge.xls"));
HSSFSheet sheet = workbook.getSheet("sheetname");
HSSFRow row = sheet.getRow(0);
HSSFCell cell = row.getCell((short)0);
String string = cell.getStringCellValue();
これで,hoge.xls の sheetname シートの A1 にある文字列を読むことができる.
セルに入っているのデータの種類により,内容を読むメソッドが異なる
- 数値
cell.getNumericCellValue()
- 日付
cell.getDateCellValue()
- 文字列
cell.getStringCellValue()
- 式 (式の結果の値ではなく,式そのもの)
cell.getCellFormula()
を使うみたい.
セルを取得するときの HSSFRow#getCell の引数は short 型.なんでやねんな感じだが,まぁ仕方ない.もし,そのセルに何も値が入ってなければ null を返す.HSSFSheet#getRow も同じく.
ちなみに,セルのスタイル (右寄せとか,背景色とか) を取得したい場合は HSSFCell#getCellStyle を使えばいいようだ.get を create に変えると,新しくそのデータを作成することになる.
ちなみに,ここに書いた内容は HSSF - HOWTO と Javadocs を眺めただけで書いたものだ.グラフを扱う方法までは読んでないし,知らない.Windows で使う分には日本語に問題はなかった.
んーっと,maven のデフォルトリモートリポジトリには古いバージョン (2.0-final-20040126) しかないので,Jakarta 本家 から 2.5.1-final-20040804 を取ってきて,${user.home}/.maven/repository/poi/jars/ 以下に置く.
これで maven でも最新版の poi が使える.