2010年12月26日日曜日

H2 DatabaseとApache POIでExcelブックのセルにハイパーリンクをセットして保存する関数を作成する

H2 DatabaseとApache POIでExcelブックのセルにハイパーリンクをセットして保存する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists poi_update_set_hyperlink as $$ 
import java.io.*;
import java.sql.*;
import java.text.*;
import org.h2.tools.*;
import org.apache.poi.ss.usermodel.*;
@CODE
int poi_update_set_hyperlink(
String inFile, String outFile, String sheetName,
int row, int column, String label, String url)
throws Exception
{
if( inFile == null ){
return -1;
}
if( outFile == null ){
return -1;
}
if( label == null ){
return -1;
}
if( url == null ){
return -1;
}
Workbook workbook = WorkbookFactory.create(new FileInputStream(inFile));
Sheet sheet = workbook.getSheet(sheetName);
if( sheet == null ){
return -1;
}

Row rowobj = sheet.getRow(row);
if( rowobj == null ){
rowobj = sheet.createRow(row);
}
Cell cell = rowobj.getCell(column);
if( cell == null ){
cell = rowobj.createCell(column);
}
// ハイパーリンクを作成
Hyperlink hyperlink = workbook.getCreationHelper().createHyperlink(
Hyperlink.LINK_URL);
hyperlink.setLabel(label);
hyperlink.setAddress(url);
sheet.getRow(row).getCell(column).setCellValue(label);
sheet.getRow(row).getCell(column).setHyperlink(hyperlink);

// 一重下線と青色を設定
Font font = workbook.createFont();
font.setFontHeightInPoints((short)10);
font.setFontName("MS ゴシック");
font.setUnderline(Font.U_SINGLE);
font.setColor(IndexedColors.BLUE.getIndex());
CellStyle cs = workbook.createCellStyle();
cs.setFont(font);
sheet.getRow(row).getCell(column).setCellStyle(cs);

workbook.write(new FileOutputStream(outFile));
return 0;
}
$$


実行例
select poi_update_set_hyperlink('c:\share\test1.xlsx', 
'c:\share\test1f.xlsx', 'シート1', 2, 0,
'hyperlink', 'http://serverarekore.blogspot.com');


入力Excel(test1.xlsx)


出力Excel(test1f.xlsx)


※システム環境変数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

0 件のコメント:

コメントを投稿