List of usage examples for org.apache.poi.ss.util AreaReference isContiguous
public static boolean isContiguous(String reference)
From source file:com.haulmont.yarg.formatters.impl.XLSFormatter.java
License:Apache License
/** * Method creates mapping [rangeName : List<CellRangeAddress>]. * List contains all merge regions for this named range. * Attention: if merged regions writes wrong - look on methods isMergeRegionInsideNamedRange or isNamedRangeInsideMergeRegion * todo: how to recognize if merge region must be copied with named range * * @param currentSheet Sheet which contains merge regions *//*from w w w . ja v a 2 s . c om*/ protected void initMergeRegions(HSSFSheet currentSheet) { int rangeNumber = templateWorkbook.getNumberOfNames(); for (int i = 0; i < rangeNumber; i++) { HSSFName aNamedRange = templateWorkbook.getNameAt(i); String refersToFormula = aNamedRange.getRefersToFormula(); if (!AreaReference.isContiguous(refersToFormula)) { continue; } AreaReference aref = new AreaReference(refersToFormula); Integer rangeFirstRow = aref.getFirstCell().getRow(); Integer rangeFirstColumn = (int) aref.getFirstCell().getCol(); Integer rangeLastRow = aref.getLastCell().getRow(); Integer rangeLastColumn = (int) aref.getLastCell().getCol(); for (int j = 0; j < currentSheet.getNumMergedRegions(); j++) { CellRangeAddress mergedRegion = currentSheet.getMergedRegion(j); if (mergedRegion != null) { Integer regionFirstRow = mergedRegion.getFirstRow(); Integer regionFirstColumn = mergedRegion.getFirstColumn(); Integer regionLastRow = mergedRegion.getLastRow(); Integer regionLastColumn = mergedRegion.getLastColumn(); boolean mergedInsideNamed = isMergeRegionInsideNamedRange(rangeFirstRow, rangeFirstColumn, rangeLastRow, rangeLastColumn, regionFirstRow, regionFirstColumn, regionLastRow, regionLastColumn); boolean namedInsideMerged = isNamedRangeInsideMergeRegion(rangeFirstRow, rangeFirstColumn, rangeLastRow, rangeLastColumn, regionFirstRow, regionFirstColumn, regionLastRow, regionLastColumn); if (mergedInsideNamed || namedInsideMerged) { String name = aNamedRange.getNameName(); SheetRange sheetRange = new SheetRange(mergedRegion, currentSheet.getSheetName()); if (mergeRegionsForRangeNames.get(name) == null) { ArrayList<SheetRange> list = new ArrayList<SheetRange>(); list.add(sheetRange); mergeRegionsForRangeNames.put(name, list); } else { mergeRegionsForRangeNames.get(name).add(sheetRange); } } } } } }
From source file:uk.co.spudsoft.birt.emitters.excel.tests.HyperlinksTest.java
License:Open Source License
private void validateNamedRange(Workbook workbook, int index, String name, int sheetIndex, int row1, int col1, int row2, int col2) { Name namedRange = workbook.getNameAt(index); assertEquals(name, namedRange.getNameName()); assertEquals(sheetIndex, namedRange.getSheetIndex()); AreaReference ref = new AreaReference(namedRange.getRefersToFormula()); if ((row1 == row2) && (col1 == col2)) { assertTrue(ref.isSingleCell());// w w w . j av a2s .c o m assertEquals(row1, ref.getFirstCell().getRow()); assertEquals(col1, ref.getFirstCell().getCol()); } else { assertTrue(AreaReference.isContiguous(namedRange.getRefersToFormula())); assertEquals(row1, Math.min(ref.getFirstCell().getRow(), ref.getLastCell().getRow())); assertEquals(col1, Math.min(ref.getFirstCell().getCol(), ref.getLastCell().getCol())); assertEquals(row2, Math.max(ref.getFirstCell().getRow(), ref.getLastCell().getRow())); assertEquals(col2, Math.max(ref.getFirstCell().getCol(), ref.getLastCell().getCol())); } }