org.apache.poi.ss.util
Class CellRangeUtil

java.lang.Object
  extended by org.apache.poi.ss.util.CellRangeUtil

public final class CellRangeUtil
extends java.lang.Object

Utility class that builds on CellRangeAddress Portions of this class may be moved to CellRangeAddressBase


Field Summary
static int ENCLOSES
          first range encloses or is equal to the second
static int INSIDE
          first range is within the second range
static int NO_INTERSECTION
           
static int OVERLAP
           
 
Method Summary
static boolean contains(CellRangeAddress crA, CellRangeAddress crB)
          Check if cell range A contains cell range B (B <= A) TODO: move this into CellRangeAddressBase
static CellRangeAddress createEnclosingCellRange(CellRangeAddress crA, CellRangeAddress crB)
          Create an enclosing CellRange for the two cell ranges.
static boolean hasExactSharedBorder(CellRangeAddress crA, CellRangeAddress crB)
          Check if the two cell ranges have a shared border.
static int intersect(CellRangeAddress crA, CellRangeAddress crB)
          Get the type of intersection between two cell ranges
static CellRangeAddress[] mergeCellRanges(CellRangeAddress[] cellRanges)
          Do all possible cell merges between cells of the list so that:
if a cell range is completely inside of another cell range, it gets removed from the list if two cells have a shared border, merge them into one bigger cell range
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NO_INTERSECTION

public static final int NO_INTERSECTION
See Also:
Constant Field Values

OVERLAP

public static final int OVERLAP
See Also:
Constant Field Values

INSIDE

public static final int INSIDE
first range is within the second range

See Also:
Constant Field Values

ENCLOSES

public static final int ENCLOSES
first range encloses or is equal to the second

See Also:
Constant Field Values
Method Detail

intersect

public static int intersect(CellRangeAddress crA,
                            CellRangeAddress crB)
Get the type of intersection between two cell ranges

Parameters:
crB - - the specified range
Returns:
code which reflects how the specified range is related to this range.
Possible return codes are:
  • NO_INTERSECTION - the specified range is outside of this range;
  • OVERLAP - both ranges partially overlap
  • INSIDE - the specified range is inside of this one
  • ENCLOSES - the specified range encloses (possibly exactly the same as) this range
See Also:
CellRangeAddressBase.intersects(CellRangeAddressBase)

mergeCellRanges

public static CellRangeAddress[] mergeCellRanges(CellRangeAddress[] cellRanges)
Do all possible cell merges between cells of the list so that:

Parameters:
cellRanges - the ranges to merge
Returns:
list of merged cell ranges

contains

public static boolean contains(CellRangeAddress crA,
                               CellRangeAddress crB)
Check if cell range A contains cell range B (B <= A) TODO: move this into CellRangeAddressBase

Parameters:
crA - cell range A
crB - cell range B
Returns:
true if cell range A contains cell range B

hasExactSharedBorder

public static boolean hasExactSharedBorder(CellRangeAddress crA,
                                           CellRangeAddress crB)
Check if the two cell ranges have a shared border.

Returns:
true if the ranges have a complete shared border (i.e. the two ranges together make a simple rectangular region.

createEnclosingCellRange

public static CellRangeAddress createEnclosingCellRange(CellRangeAddress crA,
                                                        CellRangeAddress crB)
Create an enclosing CellRange for the two cell ranges.

Returns:
enclosing CellRange