private void addDefinedNames(String sheetInternalName, ObjectFactory factory, DefinedNames definedNames, long startedRowForRegion, long endedRowForRegion, ReportRegion reportRegion) { String regionCellFrom = String.format(CELL_MASK, "A", String.valueOf(startedRowForRegion)); String regionCellTo = String.format(CELL_MASK, (reportRegion.isTabulatedRegion() ? CellReference.convertNumToColString(reportRegion.getRegionProperties().size() - 1) : "B"), String.valueOf(endedRowForRegion)); if (reportRegion.isTabulatedRegion()) { //create defined name for a header of table CTDefinedName ctDefinedName = factory.createCTDefinedName(); ctDefinedName.setName(reportRegion.getNameForHeaderBand()); String regionHeaderCellFrom = String.format(CELL_MASK, "A", String.valueOf(startedRowForRegion - 1)); String regionHeaderCellTo = String.format(CELL_MASK, CellReference.convertNumToColString(reportRegion.getRegionProperties().size() - 1), String.valueOf(endedRowForRegion - 1)); ctDefinedName.setValue(sheetInternalName + "!" + regionHeaderCellFrom + ":" + regionHeaderCellTo); definedNames.getDefinedName().add(ctDefinedName); } CTDefinedName ctDefinedName = factory.createCTDefinedName(); ctDefinedName.setName(reportRegion.getNameForBand()); ctDefinedName.setValue(sheetInternalName + "!" + regionCellFrom + ":" + regionCellTo); definedNames.getDefinedName().add(ctDefinedName); }