Author: fanningpj
Date: Mon Feb 21 13:37:35 2022
New Revision: 1898276

URL: http://svn.apache.org/viewvc?rev=1898276&view=rev
Log:
fix issue

Modified:
    
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/OperationEvaluationContext.java

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/OperationEvaluationContext.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/OperationEvaluationContext.java?rev=1898276&r1=1898275&r2=1898276&view=diff
==============================================================================
--- 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/OperationEvaluationContext.java
 (original)
+++ 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/OperationEvaluationContext.java
 Mon Feb 21 13:37:35 2022
@@ -223,7 +223,7 @@ public final class OperationEvaluationCo
 
         SpreadsheetVersion ssVersion = _workbook.getSpreadsheetVersion();
 
-        NameType part1refType = isA1Style ? classifyCellReference(refStrPart1, 
ssVersion) : NameType.CELL;
+        NameType part1refType = isA1Style ? classifyCellReference(refStrPart1, 
ssVersion) : getR1C1CellType(refStrPart1);
         switch (part1refType) {
             case BAD_CELL_OR_NAMED_RANGE:
                 return ErrorEval.REF_INVALID;
@@ -255,7 +255,7 @@ public final class OperationEvaluationCo
             }
             throw new IllegalStateException("Unexpected reference 
classification of '" + refStrPart1 + "'.");
         }
-        NameType part2refType = isA1Style ? classifyCellReference(refStrPart1, 
ssVersion) : NameType.CELL;
+        NameType part2refType = isA1Style ? classifyCellReference(refStrPart2, 
ssVersion) : getR1C1CellType(refStrPart2);
         switch (part2refType) {
             case BAD_CELL_OR_NAMED_RANGE:
                 return ErrorEval.REF_INVALID;
@@ -573,4 +573,23 @@ public final class OperationEvaluationCo
             throw new IllegalArgumentException(relativeReference + " is not a 
valid R1C1 reference");
         }
     }
+
+    private static NameType getR1C1CellType(String str) {
+        String upRef = str.toUpperCase(LocaleUtil.getUserLocale());
+        int rpos = upRef.indexOf('R');
+        int cpos = upRef.indexOf('C');
+        if (rpos != -1) {
+            if (cpos == -1) {
+                return NameType.ROW;
+            } else {
+                return NameType.CELL;
+            }
+        } else {
+            if (cpos == -1) {
+                return NameType.BAD_CELL_OR_NAMED_RANGE;
+            } else {
+                return NameType.COLUMN;
+            }
+        }
+    }
 }



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

Reply via email to