Author: cedricwalter
Date: Fri Aug 16 17:35:16 2013
New Revision: 1514812
URL: http://svn.apache.org/r1514812
Log:
Bug 54720: Support for Row/Col Area Range like 8:8 or H:H
Added:
poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIndirectFunctionFromSpreadsheet.java
poi/trunk/test-data/spreadsheet/IndirectFunctionTestCaseData.xls (with
props)
Modified:
poi/trunk/src/java/org/apache/poi/ss/formula/OperationEvaluationContext.java
poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMatchFunctionsFromSpreadsheet.java
Modified:
poi/trunk/src/java/org/apache/poi/ss/formula/OperationEvaluationContext.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/formula/OperationEvaluationContext.java?rev=1514812&r1=1514811&r2=1514812&view=diff
==============================================================================
---
poi/trunk/src/java/org/apache/poi/ss/formula/OperationEvaluationContext.java
(original)
+++
poi/trunk/src/java/org/apache/poi/ss/formula/OperationEvaluationContext.java
Fri Aug 16 17:35:16 2013
@@ -37,6 +37,7 @@ import org.apache.poi.ss.util.CellRefere
* For POI internal use only
*
* @author Josh Micich
+ * @author Cédric Walter
*/
public final class OperationEvaluationContext {
public static final FreeRefFunction UDF = UserDefinedFunction.instance;
@@ -83,13 +84,13 @@ public final class OperationEvaluationCo
} else {
// look up sheet by name from external workbook
String workbookName = externalSheet.getWorkbookName();
- try {
- targetEvaluator =
_bookEvaluator.getOtherWorkbookEvaluator(workbookName);
- } catch (WorkbookNotFoundException e) {
- throw new RuntimeException(e.getMessage(), e);
- }
- otherSheetIndex =
targetEvaluator.getSheetIndex(externalSheet.getSheetName());
- if (otherSheetIndex < 0) {
+ try {
+ targetEvaluator =
_bookEvaluator.getOtherWorkbookEvaluator(workbookName);
+ } catch (WorkbookNotFoundException e) {
+ throw new RuntimeException(e.getMessage(), e);
+ }
+ otherSheetIndex =
targetEvaluator.getSheetIndex(externalSheet.getSheetName());
+ if (otherSheetIndex < 0) {
throw new RuntimeException("Invalid sheet name
'" + externalSheet.getSheetName()
+ "' in bool '" + workbookName
+ "'.");
}
@@ -195,16 +196,32 @@ public final class OperationEvaluationCo
int firstRow, firstCol, lastRow, lastCol;
switch (part1refType) {
case COLUMN:
- firstRow =0;
- lastRow = ssVersion.getLastRowIndex();
- firstCol = parseColRef(refStrPart1);
- lastCol = parseColRef(refStrPart2);
- break;
+ firstRow =0;
+ if (part2refType.equals(NameType.COLUMN))
+ {
+ lastRow = ssVersion.getLastRowIndex();
+ firstCol = parseRowRef(refStrPart1);
+ lastCol = parseRowRef(refStrPart2);
+ }
+ else {
+ lastRow = ssVersion.getLastRowIndex();
+ firstCol = parseColRef(refStrPart1);
+ lastCol = parseColRef(refStrPart2);
+ }
+ break;
case ROW:
- firstCol = 0;
- lastCol = ssVersion.getLastColumnIndex();
- firstRow = parseRowRef(refStrPart1);
- lastRow = parseRowRef(refStrPart2);
+ // support of cell range in the form of integer:integer
+ firstCol = 0;
+ if (part2refType.equals(NameType.ROW))
+ {
+ firstRow = parseColRef(refStrPart1);
+ lastRow = parseColRef(refStrPart2);
+ lastCol = ssVersion.getLastColumnIndex();
+ } else {
+ lastCol = ssVersion.getLastColumnIndex();
+ firstRow = parseRowRef(refStrPart1);
+ lastRow = parseRowRef(refStrPart2);
+ }
break;
case CELL:
CellReference cr;
Added:
poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIndirectFunctionFromSpreadsheet.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIndirectFunctionFromSpreadsheet.java?rev=1514812&view=auto
==============================================================================
---
poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIndirectFunctionFromSpreadsheet.java
(added)
+++
poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIndirectFunctionFromSpreadsheet.java
Fri Aug 16 17:35:16 2013
@@ -0,0 +1,35 @@
+/* ====================================================================
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+==================================================================== */
+
+package org.apache.poi.ss.formula.functions;
+
+/**
+ * Tests INDIRECT() as loaded from a test data spreadsheet.<p/>
+ *
+ * Tests for bug fixes and specific/tricky behaviour can be found in the
corresponding test class
+ * (<tt>TestXxxx</tt>) of the target (<tt>Xxxx</tt>) implementor, where
execution can be observed
+ * more easily.
+ *
+ * @author Cédric Walter
+ */
+public final class TestIndirectFunctionFromSpreadsheet extends
BaseTestFunctionsFromSpreadsheet {
+
+ @Override
+ protected String getFilename() {
+ return "IndirectFunctionTestCaseData.xls";
+ }
+}
Modified:
poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMatchFunctionsFromSpreadsheet.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMatchFunctionsFromSpreadsheet.java?rev=1514812&r1=1514811&r2=1514812&view=diff
==============================================================================
---
poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMatchFunctionsFromSpreadsheet.java
(original)
+++
poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMatchFunctionsFromSpreadsheet.java
Fri Aug 16 17:35:16 2013
@@ -20,16 +20,13 @@ package org.apache.poi.ss.formula.functi
/**
- * Tests lookup functions (VLOOKUP, HLOOKUP, LOOKUP, MATCH) as loaded from a
test data spreadsheet.<p/>
- * These tests have been separated from the common function and operator tests
because the lookup
- * functions have more complex test cases and test data setup.
+ * Tests Match functions as loaded from a test data spreadsheet.<p/>
*
* Tests for bug fixes and specific/tricky behaviour can be found in the
corresponding test class
* (<tt>TestXxxx</tt>) of the target (<tt>Xxxx</tt>) implementor, where
execution can be observed
* more easily.
*
- * @author Josh Micich
- * @author Cedric Walter at innoveo.com
+ * @author Cédric Walter
*/
public final class TestMatchFunctionsFromSpreadsheet extends
BaseTestFunctionsFromSpreadsheet {
Added: poi/trunk/test-data/spreadsheet/IndirectFunctionTestCaseData.xls
URL:
http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/IndirectFunctionTestCaseData.xls?rev=1514812&view=auto
==============================================================================
Binary file - no diff available.
Propchange: poi/trunk/test-data/spreadsheet/IndirectFunctionTestCaseData.xls
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]