枠線の表示

広告

セルに対して枠線を表示する場合には、上下左右の枠線を個々に設定する必要があります。設定するのは線の種類と線の色を設定します。

まず線の種類を設定するにはCellStyleインターフェースで用意されているsetBorderTopメソッドを使います。

set the type of border to use for the top border of the cell

Parameters:
  border - type

このメソッドの場合はセルの上部にある枠線の種類の設定です。同じように他の位置については次のメソッドを使います。

枠線の位置メソッド
setBorderTop(short border)
setBorderBottom(short border)
setBorderLeft(short border)
setBorderRight(short border)

引数には線の種類を表すshort型の値を指定します。指定可能な値はCellStyleインターフェースで定義されており次のいずれかの値です。

BORDER_NONE
BORDER_THIN
BORDER_MEDIUM
BORDER_DASHED
BORDER_DOTTED
BORDER_THICK
BORDER_DOUBLE
BORDER_HAIR
BORDER_MEDIUM_DASHED
BORDER_DASH_DOT
BORDER_MEDIUM_DASH_DOT
BORDER_DASH_DOT_DOT
BORDER_MEDIUM_DASH_DOT_DOT
BORDER_SLANTED_DASH_DOT

実際の使い方は次のようになります。

Workbook wb = new HSSFWorkbook();
CellStyle style = wb.createCellStyle();

style.setBorderLeft(CellStyle.BORDER_DASHED);
style.setBorderRight(CellStyle.BORDER_DOUBLE);

この場合は左側と右側の枠線の種類を設定しています。

枠線の色

線の色を設定するにはCellStyleインターフェースで用意されているsetTopBorderColorメソッドを使います。

set the color to use for the top border

Parameters:
  color - The index of the color definition

このメソッドの場合はセルの上部にある枠線の色の設定です。同じように他の位置については次のメソッドを使います。

枠線の位置メソッド
setTopBorderColor(short color)
setBottomBorderColor(short color)
setLeftBorderColor(short color)
setRightBorderColor(short color)

引数には線の色を表すshort型の値を指定します。標準パレットに含まれている色については「org.apache.poi.ss.usermodel.IndexedColors」にて列挙型として定義されています。列挙されている値や指定方法は「前景色と背景色」を参照して下さい。

実際の使い方は次のようになります。

Workbook wb = new HSSFWorkbook();
CellStyle style = wb.createCellStyle();

style.setTopBorderColor(IndexedColors.MAROON.getIndex());
style.setBottomBorderColor(IndexedColors.SKY_BLUE.getIndex());

この場合は左側と右側の枠線の種類を設定しています。

これらのメソッドを使い枠線を表示したい枠線の位置に対して線の種類と色を指定したスタイルを作成し、セルに対してスタイルを設定します。

サンプルプログラム

実際に試してみましょう。

Sample4_1.java

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import java.io.*;

public class Sample4_1{
  public static void main(String[] args){
    Workbook wb = new HSSFWorkbook();
    Sheet sheet = wb.createSheet();
    sheet.setColumnWidth(1, 4096);

    Row row1 = sheet.createRow(1);
    row1.setHeightInPoints(70);

    Cell cell1_1 = row1.createCell(1);
    cell1_1.setCellValue("Sample");

    CellStyle style = wb.createCellStyle();

    style.setBorderTop(CellStyle.BORDER_DASHED);
    style.setBorderBottom(CellStyle.BORDER_DOUBLE);
    style.setBorderLeft(CellStyle.BORDER_MEDIUM_DASH_DOT);
    style.setBorderRight(CellStyle.BORDER_MEDIUM);

    style.setTopBorderColor(IndexedColors.MAROON.getIndex());
    style.setBottomBorderColor(IndexedColors.SKY_BLUE.getIndex());
    style.setLeftBorderColor(IndexedColors.ORANGE.getIndex());
    style.setRightBorderColor(IndexedColors.BLUE_GREY.getIndex());

    cell1_1.setCellStyle(style);

    FileOutputStream out = null;
    try{
      out = new FileOutputStream("sample4_1.xls");
      wb.write(out);
    }catch(IOException e){
      System.out.println(e.toString());
    }finally{
      try {
        out.close();
      }catch(IOException e){
        System.out.println(e.toString());
      }
    }
  }
}

1つのセルに対して、上下左右それぞれの位置の枠線を表示するスタイルを作成しセルに設定しています。それでは作成されたExcelファイルを開いてみます。

枠線の表示

上下左右の枠線が指定した色と種類を使って表示されていることが確認できます。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)