git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1514812 13f79535-47bb-0310-9956-ffa450edef68tags/REL_3_10_BETA2
@@ -37,6 +37,7 @@ import org.apache.poi.ss.util.CellReference.NameType; | |||
* 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 OperationEvaluationContext { | |||
} 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 OperationEvaluationContext { | |||
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; |
@@ -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"; | |||
} | |||
} |
@@ -20,16 +20,13 @@ package org.apache.poi.ss.formula.functions; | |||
/** | |||
* 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 { | |||