読者です 読者をやめる 読者になる 読者になる

No Programming, No Life

新しいNPNLです。http://d.hatena.ne.jp/fumokmm/ から引っ越してきました。

Jakarta POIをとりあえず使ってみる

最近、仕事でExcelでデータを入力したものをサーバにアップしたり、DBのデータを書き込んだExcelファイルをダウンロードさせたり、また、VBAを使ってガリガリExcel内で処理させたり…といった内容のものをチームでやっている。
ってことで、まだ使うか分からないんだが、ひとまずJavaでExcel操作ということでJakarta POIのさわりを弄ってみた。buzzwordさんのjavadriveに分かりやすくまとまっていたので、参考にした。Javaでそのままやっても面白みに欠けるんで、例によってGroovyで操ることにしてみた。*1

新規ブックを作ってセルに値を書き込む
import org.apache.poi.hssf.usermodel.HSSFWorkbook

/* ブック作成 */
def book = new HSSFWorkbook()

/* シート作成 */
def sheet = book.createSheet("Sheet1")

/* 行作成 */
def row = sheet.createRow(2)

/* セルに値を指定 */
row.createCell(0).setCellValue("test")
row.createCell(1).setCellValue("日本語も入力できる")

/* ファイル出力 */
book.write(new FileOutputStream("test.xls"))
結果:test.xls

f:id:fumokmm:20081108233558p:image

Groovyだと例外処理とかを省略省略できてコードの見通しが良くなっていいですね。javadriveだと日本語を使う時に "HSSFWorkbook.ENCODING_UTF_16" を指定してねと書いてあったが、バージョンが上がったからなのか、上記ソースで示したようにエンコーディング指定しなくても使えた。上記ソースは単純に新規ブックを作ってセルに値を書き込んだだけですが、javadriveさんにはもうちょっといろいろと書かれていますよ。POIはなかなか使えそうなAPIだなと思った。

*1:[http://d.hatena.ne.jp/fumokmm/20080827/1219852663:title]の方法その3:ホームディレクトリにじかに置くの方法で、POI関連のJarを置いて実行しています。poi-3.2-FINAL-20081019.jar