diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java index f3e0a10f2..7a78d4a08 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java @@ -1292,23 +1292,31 @@ public class HSSFWorkbook extends POIDocument implements org.apache.poi.ss.userm return workbook; } - /** gets the total number of named ranges in the workboko - * @return number of named ranges - */ public int getNumberOfNames(){ int result = names.size(); return result; } - - /** gets the Named range - * @param index position of the named range - * @return named range high level - */ - public HSSFName getNameAt(int index){ - HSSFName result = (HSSFName) names.get(index); - - return result; + + public HSSFName getName(String name) { + int nameIndex = getNameIndex(name); + if (nameIndex < 0) { + return null; + } + return (HSSFName) names.get(nameIndex); } + + public HSSFName getNameAt(int nameIndex) { + int nNames = names.size(); + if (nNames < 1) { + throw new IllegalStateException("There are no defined names in this workbook"); + } + if (nameIndex < 0 || nameIndex > nNames) { + throw new IllegalArgumentException("Specified name index " + nameIndex + + " is outside the allowable range (0.." + (nNames-1) + ")."); + } + return (HSSFName) names.get(nameIndex); + } + public NameRecord getNameRecord(int nameIndex) { return getWorkbook().getNameRecord(nameIndex); } @@ -1411,34 +1419,19 @@ public class HSSFWorkbook extends POIDocument implements org.apache.poi.ss.userm return newName; } - /** gets the named range index by his name - * Note:Excel named ranges are case-insensitive and - * this method performs a case-insensitive search. - * - * @param name named range name - * @return named range index - */ - public int getNameIndex(String name) - { - int retval = -1; + public int getNameIndex(String name) { - for (int k = 0; k < names.size(); k++) - { + for (int k = 0; k < names.size(); k++) { String nameName = getNameName(k); - if (nameName.equalsIgnoreCase(name)) - { - retval = k; - break; + if (nameName.equalsIgnoreCase(name)) { + return k; } } - return retval; + return -1; } - /** remove the named range by his index - * @param index named range index (0 based) - */ public void removeName(int index){ names.remove(index); workbook.removeName(index); @@ -1456,14 +1449,11 @@ public class HSSFWorkbook extends POIDocument implements org.apache.poi.ss.userm return formatter; } - /** remove the named range by his name - * @param name named range name - */ - public void removeName(String name){ + + public void removeName(String name) { int index = getNameIndex(name); removeName(index); - } public HSSFPalette getCustomPalette() diff --git a/src/java/org/apache/poi/ss/usermodel/Workbook.java b/src/java/org/apache/poi/ss/usermodel/Workbook.java index 051a48f67..6ebf1013f 100644 --- a/src/java/org/apache/poi/ss/usermodel/Workbook.java +++ b/src/java/org/apache/poi/ss/usermodel/Workbook.java @@ -274,48 +274,50 @@ public interface Workbook { void write(OutputStream stream) throws IOException; /** - * Gets the total number of named ranges in the workbook - * - * @return number of named ranges + * @return the total number of defined names in this workbook */ int getNumberOfNames(); /** - * Gets the Named range - * - * @param index position of the named range (0-based) - * @return named range high level + * @param name the name of the defined name + * @return the defined name with the specified name. null if not found. */ - Name getNameAt(int index); + Name getName(String name); + /** + * @param nameIndex position of the named range (0-based) + * @return the defined name at the specified index + * @throws IllegalArgumentException if the supplied index is invalid + */ + Name getNameAt(int nameIndex); /** - * Creates a new named range in this workbook + * Creates a new (uninitialised) defined name in this workbook * - * @return new named range object + * @return new defined name object */ Name createName(); /** - * Gets the named range index by his name - * Note:Excel named ranges are case-insensitive and - * this method performs a case-insensitive search. - * - * @param name named range name - * @return named range index - */ - int getNameIndex(String name); - - /** - * Remove the named range by his index - * - * @param index named range index (0 based) - */ - void removeName(int index); + * Gets the defined name index by name
+ * Note: Excel defined names are case-insensitive and + * this method performs a case-insensitive search. + * + * @param name the name of the defined name + * @return zero based index of the defined name. -1 if not found. + */ + int getNameIndex(String name); /** - * Remove the named range by his name + * Remove the defined name at the specified index * - * @param name named range name + * @param index named range index (0 based) + */ + void removeName(int index); + + /** + * Remove a defined name by name + * + * @param name the name of the defined name */ void removeName(String name); diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java index 874cd0f38..9cb66c531 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java @@ -417,11 +417,6 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable nNames) { + throw new IllegalArgumentException("Specified name index " + nameIndex + + " is outside the allowable range (0.." + (nNames-1) + ")."); + } + return namedRanges.get(nameIndex); } /** @@ -615,7 +620,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable lastSheetIx) { throw new IllegalArgumentException("Sheet index (" - + index +") is out of range (0.." + lastSheetIx + ")"); + + index +") is out of range (0.." + lastSheetIx + ")"); } } @@ -918,7 +912,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable endColumn) throw new IllegalArgumentException("Invalid column range specification"); if ((startRow == -1 && endRow != -1) || startRow < -1 || endRow < -1 || startRow > endRow) @@ -1223,11 +1217,11 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable