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