セルにスタイルを設定
セルにスタイルを設定するには以下の2つの手順を踏む必要があります。
1)設定したいスタイルの作成
2)作成したスタイルをセルに設定
スタイルの作成にはXSSFWorkbookクラスのcreateCellStyleメソッドを、セル
にスタイルを設定するのにはXSSFCellクラスのsetCellStyleメソッドをそれぞれ
使用します。
セルに色をつける
→ サンプルソース( Sample_07_02.java )
セルに色をつける設定には色と模様の2つがあります。また色についても前景色
と背景色の2種類が存在します。それぞれ
前景色・・・模様の色
背景色・・・下地の色
となっており、初期設定はそれぞれ前景色が黒、背景色が白となっています。つ
まりセルに色をつけるには3つを設定する必要があるのです。
1)模様の設定
2)模様の色の設定
3)下地の色の設定
模様や色の設定にはXSSFCellStyleクラスのメソッドをそれぞれ使用します。模
様の設定にはsetFillPatternメソッドを、前景色の設定にはsetFillForegroundC
olorメソッドを、背景色の設定にはsetFillBackgroundColorメソッドといった
具合になっております。
記述
XSSFWorkbook wb = new Workbook( );
XSSFSheet sheet = wb.createSheet( "sheet01" );
XSSFRow row = sheet.createRow( 1 );
XSSFCell cell = row.creatCell( 1 );
XSSFCellStyle style = wb.createCellStyle( );
style.setFillPattern(CellStyle.BIG_SPOTS);
style.setFillForegroundColor(IndexedColors.RED.getIndex( ) );
style.setFillBackgroundColor(IndexedColors.BLUE.getIndex( ) );
cell.setCellStyle( style );
まずは模様の設定について説明をします。設定できる模様は以下の19種類とな
ります。
| 模様 | 定数 | 見本 |
|---|---|---|
| 設定なし | NO_FILL | |
| 100%塗りつぶし | SOLID_FOREGROUND | |
| 75%濃度塗りつぶし | ALT_BARS | |
| 50%濃度塗りつぶし | FINE_DOTS | |
| 25%濃度塗りつぶし | SPARSE_DOTS | |
| 12.5%濃度塗りつぶし | LESS_DOTS | |
| 6.25%濃度塗りつぶし | LEAST_DOTS | |
| 縦線 縞(細) | THIN_VERT_BANDS | |
| 縦線 縞(太) | THICK_VERT_BANDS | |
| 横線 縞(細) | THIN_HORZ_BANDS | |
| 横線 縞(太) | THICK_HORZ_BANDS | |
| 縦横線 格子(細) | SQUARES | |
| 右下がり斜線 縞(細) | THIN_BACKWARD_DIAG | |
| 右下がり斜線 縞(太) | THICK_BACKWARD_DIAG | |
| 左下がり斜線 縞(細) | THIN_FORWARD_DIAG | |
| 左下がり斜線 縞(太) | THICK_FORWARD_DIAG | |
| 斜線 格子(細) | DIAMONDS | |
| 斜線 格子(太) | BIG_SPOTS | |
| 斜線 格子(極太) | BRICKS |
続いて色の設定です。上記のサンプルではIndexedColorsで定義された色に対応
する番号を渡していますが、以下のような方法でRGBを設定して渡すことも可能
です。
罫線の設定
→ サンプルソース( Sample_07_03.java )
罫線の設定では、セルに対する罫線の位置と線の種類、線の色という3つの内容
に対してXSSFCellStyleクラスのメソッドを使用してそれぞれ設定を行います。
XSSFWorkbook wb = new Workbook( );
XSSFSheet sheet = wb.createSheet( "sheet01" );
XSSFRow row = sheet.createRow( 1 );
XSSFCell cell = row.createCell( 1 );
XSSFCellStyle style = wb.createCellStyle();
style.setTopBorderColor( IndexedColors.RED.getIndex( ) );
style.setBorderTop( CellStyle.BORDER_THIN );
style.setBottomBorderColor( IndexedColors.RED.getIndex( ) );
style.setBorderBottom( CellStyle.BORDER_DOTTED );
style.setLeftBorderColor( IndexedColors.RED.getIndex( ) );
style.setBorderLeft( CellStyle.BORDER_DASHED );
style.setRightBorderColor( IndexedColors.RED.getIndex( ) );
style.setBorderRight( CellStyle.BORDER_DOUBLE );
cell.setCellStyle( style );
罫線の位置と関数の関係は以下のようになります。
| 位置 | 線種の設定 | 線色の設定 |
|---|---|---|
| 上 | setBorderTop | setTopBorderColor |
| 下 | setBorderBottom | setBottomBorderColor |
| 左 | setBorderLeft | setLeftBorderColor |
| 右 | setBorderRight | setRightBorderColor |
線の種類を設定するにはCellStyleで定義された以下の定数を引数として渡します。
| 線種 | 定数 | 見本 |
|---|---|---|
| 線なし | BORDER_NONE | |
| 実線 | BORDER_THIN | |
| 点線 | BORDER_DOTTED | |
| 点線と破線の中間 | BORDER_HAIR | |
| 破線 | BORDER_DASHED | |
| 1点鎖線 | BORDER_DASH_DOT | |
| 2点鎖線 | BORDER_DASH_DOT_DOT | |
| 2重線 | BORDER_DOUBLE | |
| 太線 | BORDER_MEDIUM | |
| 破線(太) | BORDER_MEDIUM_DASHED | |
| 1点鎖線(太) | BORDER_MEDIUM_DASH_DOT | |
| 2点鎖線(太) | BORDER_MEDIUM_DASH_DOT_DOT | |
| 斜め1点鎖線(太) | BORDER_SLANTED_DASH_DOT | |
| 極太線 | BORDER_THICK |
また線の色を設定するために上記のサンプルではIndexedColorsで定義された色
に対応する番号を渡していますが、以下のような方法でRGBを設定して渡すこと
も可能です。
表示形式の変更
→ サンプルソース( Sample_07_04.java )
日付表記や%表記など表示形式を設定したい場合は、XSSFStyleクラスのsetDa
taFormatメソッドを使用します。
記述
XSSFWorkbook wb = new Workbook( );
XSSFSheet sheet = wb.createSheet( "sheet01" );
XSSFRow row = sheet.createRow( 1 );
XSSFCell cell = row.createCell( 1 );
cell.setCellValue( 0.1 );
XSSFCellStyle style = wb.createCellStyle( );
DataFormat format = wb.createDataFormat( );
style.setDataFormat( format.getFormat( "#.0#%" ) );
cell.setCellStyle( style );
DataFormatクラスのgetFormatメソッドを使用してフォーマットをshort型に
変換し、それを引数として渡します。フォーマットの設定についてはMicroSoft
のサポートページをご参照ください。(リンクは別ページで開きます)
セル内表示位置の設定
→ サンプルソース( Sample_07_05.java )
セル内表示位置を設定するには、XSSFCellStyleクラスのsetAlignmentメソッド
(水平方向)とsetVerticalAlignmentメソッド(垂直方向)を使用します。
XSSFWorkbook wb = new Workbook( );
XSSFSheet sheet = wb.createSheet( "sheet01" );
XSSFRow row = sheet.createRow( 1 );
XSSFCell cell = row.createCell( 1 );
cell.setCellValue( 123 );
XSSFCellStyle style = wb.createCellStyle( );
style.setAlignment( CellStyle.ALIGN_CENTER );
style.setVerticalAlignment( CellStyle.VERTICAL_CENTER );
cell.setCellStyle( style );
引数にはCellStyleで定義された定数を渡します。以下がその定数の一覧です。
| 効果 | 定数 | 対象 |
|---|---|---|
| 標準 | ALIGN_GENERAL | 水平 |
| 左詰め | ALIGN_LEFT | 水平 |
| 中央揃え | ALIGN_CEFT | 水平 |
| 右詰め | ALIGN_RIGHT | 水平 |
| 繰り返し | ALIGN_FILL | 水平 |
| 両端揃え | ALIGN_JUSTIFY | 水平 |
| 選択範囲内で中央 | ALIGN_CENTER_SELECTION | 水平 |
| 上詰め | VERTICAL_TOP | 垂直 |
| 中央揃え | VERTICAL_CENTER | 垂直 |
| 下詰め | VERTICAL_BOTTOM | 垂直 |
| 両端揃え | VERTICAL_JUSTIFY | 垂直 |
フォントの設定
→ サンプルソース( Sample_07_06.java )
フォントの設定は、以下の3つの手順によって行われます。
1)XSSFWorkBookクラスのcreateFontメソッドでXSSFFontクラスを作成
2)XSSFFontの各メソッドでフォントを設定
3)XSSFCellStyleクラスのsetFontメソッドで設定したフォントをスタイル
に追加
記述
XSSFWorkbook wb = new Workbook( );
XSSFSheet sheet = wb.createSheet( "sheet01" );
XSSFRow row = sheet.createRow( 1 );
XSSFCell cell = row.creatCell( 1 );
XSSFCellStyle style = wb.createCellStyle( );
XSSFFont font = wb.createFont( );
font.setFontName( "MS 明朝" );
font.setFontHeightInPoints( (short)16 );
font.setFontColor( IndexedColors.RED.getIndex( ) );
font.setBoldweight( Font.BOLDWEIGHT_BOLD );
font.setItalic( true );
font.setUnderline( Font.U_SINGLE );
font.setStrikeout( true );
style.setFont( font );
cell.setCellStyle( style );
フォントの設定項目と関数の関係は以下の通りとなっており、
| 設定 | 関数 |
|---|---|
| フォント名 | setFontName( String fontname ) |
| フォントサイズ | setFontHeightInPoints( short fontsize ) |
| フォントカラー |
setColor( short color_index ) setColor( XSSFColor color ) |
| 文字の装飾(太字) | setBoldweight( short boldweight ) |
| 文字の装飾(斜体) | setItalic( boolean italic ) |
| 文字の装飾(下線) | setUnderline( byte underline ) |
| 文字の装飾(打ち消し線) | setStrikeout( boolean strikeout ) |
このうち太字と下線の文字装飾については、XSSFFontクラスの定数を引数に渡
します。
| 意味 | 定数 | 使用対象 |
|---|---|---|
| 標準 | BOLDWEIGHT_NORMAL | 太字 |
| 太字 | BOLDWEIGHT_BOLD | 太字 |
| なし | U_NONE | 下線 |
| 実線(値との間に隙間なし) | U_SINGLE | 下線 |
| 実線(値との間に隙間あり) | U_SINGLE_ACCOUNTING | 下線 |
| 2重線(値との間に隙間なし) | U_DOUBLE | 下線 |
| 2重線(値との間に隙間あり) | U_DOUBLE_ACCOUNTING | 下線 |