Author: gwoolsey
Date: Sun Mar 31 03:49:16 2019
New Revision: 1856655

URL: http://svn.apache.org/viewvc?rev=1856655&view=rev
Log:
fix a condition not seen until a recent expansion of the stress test.  
Gracefully ignore missing/invalid external sheet references in one more path 
(there were several already with comments like "this seems to be what Excel 
does in this case")

Modified:
    poi/trunk/src/java/org/apache/poi/ss/formula/SheetNameFormatter.java
    
poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFEvaluationSheet.java

Modified: poi/trunk/src/java/org/apache/poi/ss/formula/SheetNameFormatter.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/formula/SheetNameFormatter.java?rev=1856655&r1=1856654&r2=1856655&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ss/formula/SheetNameFormatter.java 
(original)
+++ poi/trunk/src/java/org/apache/poi/ss/formula/SheetNameFormatter.java Sun 
Mar 31 03:49:16 2019
@@ -179,7 +179,7 @@ public final class SheetNameFormatter {
 
                int len = rawSheetName.length();
                if(len < 1) {
-                       throw new RuntimeException("Zero length string is an 
invalid sheet name");
+                   return false; // some cases we get missing external 
references, resulting in empty sheet names
                }
                if(Character.isDigit(rawSheetName.charAt(0))) {
                        // sheet name with digit in the first position always 
requires delimiting

Modified: 
poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFEvaluationSheet.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFEvaluationSheet.java?rev=1856655&r1=1856654&r2=1856655&view=diff
==============================================================================
--- 
poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFEvaluationSheet.java
 (original)
+++ 
poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFEvaluationSheet.java
 Sun Mar 31 03:49:16 2019
@@ -17,9 +17,12 @@
 
 package org.apache.poi.hssf.usermodel;
 
+import org.apache.poi.hssf.HSSFTestDataSamples;
 import org.apache.poi.ss.formula.EvaluationSheet;
 import org.apache.poi.ss.usermodel.BaseTestXEvaluationSheet;
+import org.apache.poi.ss.usermodel.Name;
 import org.apache.poi.ss.usermodel.Sheet;
+import org.junit.Test;
 
 import java.util.AbstractMap;
 import java.util.Map;
@@ -30,4 +33,15 @@ public class TestHSSFEvaluationSheet ext
         HSSFSheet sheet = new HSSFWorkbook().createSheet();
         return new AbstractMap.SimpleEntry<>(sheet, new 
HSSFEvaluationSheet(sheet));
     }
+    
+    @Test
+    public void testMissingExternalName() {
+        HSSFWorkbook wb = 
HSSFTestDataSamples.openSampleWorkbook("external_name.xls");
+        for (Name name : wb.getAllNames()) {
+            // this sometimes causes exceptions
+            if(!name.isFunctionName()) {
+                name.getRefersToFormula();
+            }
+        }
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to