Author: fanningpj
Date: Mon Feb 7 20:55:26 2022
New Revision: 1897827
URL: http://svn.apache.org/viewvc?rev=1897827&view=rev
Log:
add negative tets
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/OperationEvaluationContext.java
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Indirect.java
poi/trunk/poi/src/main/java/org/apache/poi/ss/util/CellReference.java
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestIndirect.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=1897827&r1=1897826&r2=1897827&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 7 20:55:26 2022
@@ -207,6 +207,8 @@ public final class OperationEvaluationCo
* @param isA1Style specifies the format for {@code refStrPart1} and
{@code refStrPart2}.
* Pass {@code true} for 'A1' style and {@code false}
for 'R1C1' style.
* @return a {@link RefEval} or {@link AreaEval}
+ * @throws IllegalArgumentException
+ * @throws IllegalStateException
*/
public ValueEval getDynamicReference(String workbookName, String
sheetName, String refStrPart1,
String refStrPart2, boolean
isA1Style) {
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Indirect.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Indirect.java?rev=1897827&r1=1897826&r2=1897827&view=diff
==============================================================================
---
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Indirect.java
(original)
+++
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Indirect.java
Mon Feb 7 20:55:26 2022
@@ -17,6 +17,8 @@
package org.apache.poi.ss.formula.functions;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.apache.poi.ss.formula.FormulaParseException;
import org.apache.poi.ss.formula.FormulaParser;
import org.apache.poi.ss.formula.FormulaParsingWorkbook;
@@ -45,6 +47,7 @@ import org.apache.poi.ss.usermodel.Table
*/
public final class Indirect implements FreeRefFunction {
+ private static final Logger LOGGER = LogManager.getLogger(Indirect.class);
public static final FreeRefFunction instance = new Indirect();
private Indirect() {
@@ -136,7 +139,12 @@ public final class Indirect implements F
refStrPart1 = refText.substring(0, colonPos).trim();
refStrPart2 = refText.substring(colonPos + 1).trim();
}
- return ec.getDynamicReference(workbookName, sheetName,
refStrPart1, refStrPart2, isA1style);
+ try {
+ return ec.getDynamicReference(workbookName, sheetName,
refStrPart1, refStrPart2, isA1style);
+ } catch (Exception e) {
+ LOGGER.atWarn().log("Indirect function: failed to parse
reference {}", text, e);
+ return ErrorEval.REF_INVALID;
+ }
}
}
Modified: poi/trunk/poi/src/main/java/org/apache/poi/ss/util/CellReference.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/util/CellReference.java?rev=1897827&r1=1897826&r2=1897827&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/util/CellReference.java
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/util/CellReference.java Mon
Feb 7 20:55:26 2022
@@ -109,6 +109,7 @@ public class CellReference implements Ge
/**
* Create an cell ref from a string representation. Sheet names
containing special characters should be
* delimited and escaped as per normal syntax rules for formulas.
+ * @throws IllegalArgumentException if cellRef is not valid
*/
public CellReference(String cellRef) {
if(endsWithIgnoreCase(cellRef, "#REF!")) {
Modified:
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestIndirect.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestIndirect.java?rev=1897827&r1=1897826&r2=1897827&view=diff
==============================================================================
---
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestIndirect.java
(original)
+++
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestIndirect.java
Mon Feb 7 20:55:26 2022
@@ -177,6 +177,7 @@ final class TestIndirect {
// simple error propagation:
confirm(feA, c, "INDIRECT(\"'Sheet1 '!R3C4\", FALSE)",
ErrorEval.REF_INVALID);
+ confirm(feA, c, "INDIRECT(\"R2CX\", FALSE)",
ErrorEval.REF_INVALID);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]