Hatena::ブログ(Diary)

kensir0uのしくみ このページをアンテナに追加 RSSフィード

2009-01-14

Apache POIのExcel2007対応について

昨年末にApache POIOffice2007対応版のベータ4版が出たのでためしてみた。

・旧バージョンとの比較(EXCELの場合)

Apache POI 3.2系=HSSF(〜Excel2003)
Apache POI 3.5系=HSSF(〜Excel2003)+XSSF(Excel2007)

3.5系ではHSSFとXSSFをまとめるスーパーインターフェースができてる。

パッケージ的には「SS

H”SS”F⇒SS

X”SS”F⇒SS 

の部分を取ったんだろう。

以下、スーパーインターフェース

org.apache.poi.ss.usermodel.Cell
org.apache.poi.ss.usermodel.Row
org.apache.poi.ss.usermodel.Sheet
org.apache.poi.ss.usermodel.Workbook

で、xlsxとxlsを統一的に処理するためには

WorkbookFactoryクラスのcreateメソッドを使えば良い。

以下サンプルソース


import java.io.FileInputStream;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

/*
 * 作成日 (creation date)  :2009/01/14
 * パッケージ  (package name) :
 * ファイル名  (file name)    :PoiTest.java
 */

/**
 * <i>概要(abstract)</i>: POIテスト
 *<e3><80><80>.<p>
 * POIテスト
 * 
 *
 * @author  kensir0u
 * @version 1.0
 * @since   JDK 5.0
 *
 */
public class PoiTest {
	public static void main(String[] args) throws Exception{
		String fileName = "Test.xlsx"; //or Test.xls
		Workbook wb = WorkbookFactory.create(new FileInputStream(fileName));
		Sheet s =wb.getSheetAt(0);
		Row r = s.getRow(0);
		Cell c = r.getCell(0);
		c.setCellValue("日本語");
	}
}



あと3.2系では日本語はcell.setCellValue(new HSSFRichTextString("日本語"))って記述しなきゃならなかったんだけども

3.5系では対応されてるみたいでHSSFRichTextStringの記述は不要

※正確には@deprecatedだったものが解消された。

3.2系はcell.setCellValue("日本語")の記述は可能だがメソッドに@deprecated指定されている。


便利になった反面、気になるところが外部Jarの依存が増えたところ。

Excel2007(XMLフォーマットベース)を利用するのであれば

依存Jarが多々。

以下 依存Jar

・log4j-1.2.13.jar //たぶんopenxml4jに依存 詳しく見てないけど、ないとエラー起きた。
・dom4j-1.6.1.jar //DOM
・jsr173_1.0_api.jar //JSR173
・ooxml-schemas-1.0.jar //OOXML(ECMA376) 
・openxml4j-1.0-beta.jar //dom4j依存 OpenXMLのAPI 直接POIで使ってる
・xmlbeans-2.3.0.jar //ooxml-schemas依存 直接POIで使ってる


download はこちら⇒ http://www.apache.org/dyn/closer.cgi/poi/dev/

上記Jarも含まれています。

kuroppekuroppe 2009/01/16 17:36 検索したのですが、ダウンロードできる所が見つけられませんでした。
よろしければ、教えていただけますでしょうか?

kensir0ukensir0u 2009/01/16 22:42 リンクを追加しておきました。
http://www.apache.org/dyn/closer.cgi/poi/dev/

kuroppekuroppe 2009/01/19 07:17 リンクありがとうございます。
大変助かりました。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証