private CellFormatResult getMergedCellValue(final Cell cell, final Locale locale) {

        final Sheet sheet = cell.getSheet();
        final int size = sheet.getNumMergedRegions();

        for(int i=0; i < size; i++) {
            final CellRangeAddress range = sheet.getMergedRegion(i);
            if(!range.isInRange(cell.getRowIndex(), cell.getColumnIndex())) {
                continue;
            }

            // 非BLANKまたはnullでないセルを取得する。
            for(int rowIdx=range.getFirstRow(); rowIdx <= range.getLastRow(); rowIdx++) {
                final Row row = sheet.getRow(rowIdx);
                if(row == null) {
                    continue;
                }

                for(int colIdx=range.getFirstColumn(); colIdx <= range.getLastColumn(); colIdx++) {
                    final Cell valueCell = row.getCell(colIdx);
                    if(valueCell == null || valueCell.getCellTypeEnum() == CellType.BLANK) {
                        continue;
                    }

                    return format(valueCell, locale);
                }
            }

        }

        return createBlankCellResult();
    }
private CellFormatResult getMergedCellValue ( final Cell cell , final Locale locale ) { final Sheet sheet = cell . getSheet ( ) ; final int size = sheet . getNumMergedRegions ( ) ; for ( int i = 0 ; i < size ; i ++ ) { final CellRangeAddress range = sheet . getMergedRegion ( i ) ; if ( ! range . isInRange ( cell . getRowIndex ( ) , cell . getColumnIndex ( ) ) ) { continue ; } for ( int rowIdx = range . getFirstRow ( ) ; rowIdx <= range . getLastRow ( ) ; rowIdx ++ ) { final Row row = sheet . getRow ( rowIdx ) ; if ( row == null ) { continue ; } for ( int colIdx = range . getFirstColumn ( ) ; colIdx <= range . getLastColumn ( ) ; colIdx ++ ) { final Cell valueCell = row . getCell ( colIdx ) ; if ( valueCell == null || valueCell . getCellTypeEnum ( ) == CellType . BLANK ) { continue ; } return format ( valueCell , locale ) ; } } } return createBlankCellResult ( ) ; }
結合されているセルの値の取得。
<p>通常は左上のセルに値が設定されているが、結合されているときは左上以外のセルの値を取得する。
<p>左上以外のセルに値が設定されている場合は、CellTypeがCELL_TYPE_BLANKになるため注意が必要。
@param cell
@param locale
@return