今回はハイパーリンク (Hyperlinks) です(一覧)。
Java コード
ハイパーリンクを作成するサンプル。 Hyperlink オブジェクトは以下のように生成します:
- CreationHelper オブジェクトを取得する(Workbook オブジェクトより)
- CreationHelper#createHyperlink() メソッドによって Hyperlink オブジェクトを生成する
- address プロパティにリンク先の URL 等を設定する
- セルに Hyperlink オブジェクトをセットする
です。 ハイパーリンクには次の4つのタイプが定義されています:
- URL (Hyperlink.LINK_URL)
- カレント・フォルダ上のファイルへのリンク (Hyperlink.LINK_FILE)
- e-mail へのリンク (Hyperlink.LINK_EMAIL)
- ドキュメント上のシート、セルへのリンク (Hyperlink.LINK_DOCUMENT)
タイプの指定をするには、CreationHelper オブジェクトから Hyperlink オブジェクトを生成する際に、Hyperlink クラスに定義されている対応する定数を指定します。 詳しくは Java コードを参照のこと:
Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook(); CreationHelper createHelper = wb.getCreationHelper(); //cell style for hyperlinks //by default hypelrinks are blue and underlined CellStyle hlink_style = wb.createCellStyle(); Font hlink_font = wb.createFont(); hlink_font.setUnderline(Font.U_SINGLE); hlink_font.setColor(IndexedColors.BLUE.getIndex()); hlink_style.setFont(hlink_font); Cell cell; Sheet sheet = wb.createSheet("Hyperlinks"); //URL cell = sheet.createRow(0).createCell((short)0); cell.setCellValue("URL Link"); Hyperlink link = createHelper.createHyperlink(Hyperlink.LINK_URL); link.setAddress("http://poi.apache.org/"); cell.setHyperlink(link); cell.setCellStyle(hlink_style); //link to a file in the current directory cell = sheet.createRow(1).createCell((short)0); cell.setCellValue("File Link"); link = createHelper.createHyperlink(Hyperlink.LINK_FILE); link.setAddress("link1.xls"); cell.setHyperlink(link); cell.setCellStyle(hlink_style); //e-mail link cell = sheet.createRow(2).createCell((short)0); cell.setCellValue("Email Link"); link = createHelper.createHyperlink(Hyperlink.LINK_EMAIL); //note, if subject contains white spaces, make sure they are url-encoded link.setAddress("mailto:poi@apache.org?subject=Hyperlinks"); cell.setHyperlink(link); cell.setCellStyle(hlink_style); //link to a place in this workbook //create a target sheet and cell Sheet sheet2 = wb.createSheet("Target Sheet"); sheet2.createRow(0).createCell((short)0).setCellValue("Target Cell"); cell = sheet.createRow(3).createCell((short)0); cell.setCellValue("Worksheet Link"); Hyperlink link2 = createHelper.createHyperlink(Hyperlink.LINK_DOCUMENT); link2.setAddress("'Target Sheet'!A1"); cell.setHyperlink(link2); cell.setCellStyle(hlink_style);
設定が結構面倒そうですが、実際にハイパーリンク関連の設定をしている箇所はそんなにありません。
PoiBuilder による構築
PoiBuilder でハイパーリンクを生成するには hyperlink ノードを使います。 このノードには Hyperlink クラスに定義されている定数(Hyperlink.LINK_URL など)を値として渡します:
@GrabResolver('http://www5.ocn.ne.jp/~coast/repo/') @Grab('org.waman.tools:poi-builder:0.0.5') import org.waman.tools.poi.PoiBuilder def workbook = new PoiBuilder().workbook{ def hlinkStyle = cellStyle(font:font(underline:U_SINGLE, color:BLUE)) sheet('Hyperlinks'){ // URL row(0){ cell(0, cellValue:'URL Link', cellStyle:hlinkStyle, hyperlink:hyperlink(LINK_URL, address:'http://poi.apache.org/')) } // カレント・フォルダ上にあるファイルへのリンク row(1){ cell(0, cellValue:'File Link', cellStyle:hlinkStyle, hyperlink:hyperlink(LINK_FILE, address:'link1.xls')) } // e-mail へのリンク row(2){ cell(0, cellValue:'Email Link', cellStyle:hlinkStyle, hyperlink:hyperlink(LINK_EMAIL, address:'mailto:poi@apache.org?subject=Hyperlinks')) } // ドキュメント上のシート、セルへのリンク row(3){ cell(0, cellValue:'Worksheet Link', cellStyle:hlinkStyle, hyperlink:hyperlink(LINK_DOCUMENT, address:"'Target Sheet'!A1")) } } sheet('Target Sheet'){ row(0){ // 4つ目のリンクのターゲットとなるセル cell(0, cellValue:'TargetCell') } } }
まぁ、素直な構築ではないでしょうか。
作成されるスプレッドシート


- 作者: 竹添直樹,島本多可子,小津美夕紀,亀井隆司
- 出版社/メーカー: 翔泳社
- 発売日: 2011/07/16
- メディア: 大型本
- 購入: 6人 クリック: 217回
- この商品を含むブログ (20件) を見る

- 作者: 関谷和愛,上原潤二,須江信洋,中野靖治
- 出版社/メーカー: 技術評論社
- 発売日: 2011/07/06
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 392回
- この商品を含むブログ (152件) を見る