2010年12月12日日曜日

H2 DatabaseとApache POIでExcelブックのセルの日付を返す関数を作成する

H2 DatabaseとApache POIでExcelブックのセルの日付を返す関数を作成するには、以下のスクリプトを実行します。

create alias if not exists poi_get_date_cell_value as $$ 
import java.io.*;
import java.sql.*;
import org.h2.tools.*;
import org.apache.poi.ss.usermodel.*;
@CODE
Date poi_get_date_cell_value(
String file, String sheetName,
int row, int column)
throws Exception
{
if( file == null ){
return null;
}
Workbook workbook = WorkbookFactory.create(new FileInputStream(file));
Sheet sheet = workbook.getSheet(sheetName);
if( sheet == null ){
return null;
}
Row rowobj = sheet.getRow(row);
if( rowobj == null ){
return null;
}
Cell cell = rowobj.getCell(column);
if( cell == null ){
return null;
}
if( cell.getCellType() != Cell.CELL_TYPE_NUMERIC ){
return null;
}
java.util.Date dt = null;
try
{
dt = cell.getDateCellValue();
}
catch(NumberFormatException nfex)
{
return null;
}
return new java.sql.Date(dt.getTime());
}
$$


実行例
select poi_get_date_cell_value('c:\share\test2.xlsx', 'Sheet1', 3, 1);


※システム環境変数CLASSPATHにtools.jarと以下のPOI関連のjarを追加しておくこと。
・poi-3.7-20101029.jar
・poi-ooxml-3.7-20101029.jar
・poi-ooxml-schemas-3.7-20101029.jar
・commons-logging-1.1.jar
・log4j-1.2.13.jar;
・geronimo-stax-api_1.0_spec-1.0.jar
・xmlbeans-2.3.0.jar
・dom4j-1.6.1.jar

動作環境
JDK6 Update 22, H2 Database 1.2.147 (2010-11-21), Apache POI 3.7
○関連情報
・H2 Databaseに関する他の記事はこちらを参照してください。

0 件のコメント:

コメントを投稿