fix: NumberFormatException if XSSFName.setNameName is set with a long name #55
Closed
| @@ -26,6 +26,8 @@ Licensed to the Apache Software Foundation (ASF) under one or more | ||
| import org.apache.poi.ss.usermodel.BaseTestNamedRange; | ||
| import org.apache.poi.ss.util.CellRangeAddress; | ||
| +import java.io.IOException; | ||
| + | ||
| /** | ||
| * @author Yegor Kozlov | ||
| */ | ||
| @@ -130,4 +132,22 @@ public void testSetNameName() throws Exception { | ||
| wb.close(); | ||
| } | ||
| + | ||
| + @Test | ||
| + public void testSetNameNameLongName() throws IOException { | ||
| + // Test that renaming named ranges doesn't break our new named range map | ||
| + XSSFWorkbook wb = new XSSFWorkbook(); | ||
| + wb.createSheet("First Sheet"); | ||
| + | ||
| + //Name with very long name. Looks like a cell reference but this is not a reference. | ||
| + XSSFName nameSheet1 = wb.createName(); | ||
| + nameSheet1.setNameName("F04030020010"); | ||
Mille4Ever
|
||
| + nameSheet1.setRefersToFormula("'First Sheet'!$A$1"); | ||
| + nameSheet1.setSheetIndex(0); | ||
| + | ||
| + assertEquals(1, wb.getNames("F04030020010").size()); | ||
| + assertEquals(nameSheet1, wb.getName("F04030020010")); | ||
| + | ||
| + wb.close(); | ||
| + } | ||
| } | ||
I think it would make sense to adjust setNameName to catch exceptions from isRowWithinRange. isRowWithinRange seems like it likely to be used for me than just this use case.