Allow XSSF to evaluate multi-sheet references too, for #55906

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1613455 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Nick Burch 2014-07-25 15:55:49 +00:00
parent 82b36d3268
commit 97c4bbc9b8
2 changed files with 7 additions and 7 deletions

View File

@ -79,8 +79,8 @@ public final class OperationEvaluationContext {
SheetRangeEvaluator createExternSheetRefEvaluator(ExternSheetReferenceToken ptg) { SheetRangeEvaluator createExternSheetRefEvaluator(ExternSheetReferenceToken ptg) {
return createExternSheetRefEvaluator(ptg.getExternSheetIndex()); return createExternSheetRefEvaluator(ptg.getExternSheetIndex());
} }
SheetRangeEvaluator createExternSheetRefEvaluator(String sheetName, int externalWorkbookNumber) { SheetRangeEvaluator createExternSheetRefEvaluator(String firstSheetName, String lastSheetName, int externalWorkbookNumber) {
ExternalSheet externalSheet = _workbook.getExternalSheet(sheetName, null, externalWorkbookNumber); ExternalSheet externalSheet = _workbook.getExternalSheet(firstSheetName, lastSheetName, externalWorkbookNumber);
return createExternSheetRefEvaluator(externalSheet); return createExternSheetRefEvaluator(externalSheet);
} }
SheetRangeEvaluator createExternSheetRefEvaluator(int externSheetIndex) { SheetRangeEvaluator createExternSheetRefEvaluator(int externSheetIndex) {
@ -306,7 +306,8 @@ public final class OperationEvaluationContext {
return new LazyRefEval(rptg.getRow(), rptg.getColumn(), sre); return new LazyRefEval(rptg.getRow(), rptg.getColumn(), sre);
} }
public ValueEval getRef3DEval(Ref3DPxg rptg) { public ValueEval getRef3DEval(Ref3DPxg rptg) {
SheetRangeEvaluator sre = createExternSheetRefEvaluator(rptg.getSheetName(), rptg.getExternalWorkbookNumber()); SheetRangeEvaluator sre = createExternSheetRefEvaluator(
rptg.getSheetName(), rptg.getLastSheetName(), rptg.getExternalWorkbookNumber());
return new LazyRefEval(rptg.getRow(), rptg.getColumn(), sre); return new LazyRefEval(rptg.getRow(), rptg.getColumn(), sre);
} }
@ -321,7 +322,8 @@ public final class OperationEvaluationContext {
aptg.getLastRow(), aptg.getLastColumn(), sre); aptg.getLastRow(), aptg.getLastColumn(), sre);
} }
public ValueEval getArea3DEval(Area3DPxg aptg) { public ValueEval getArea3DEval(Area3DPxg aptg) {
SheetRangeEvaluator sre = createExternSheetRefEvaluator(aptg.getSheetName(), aptg.getExternalWorkbookNumber()); SheetRangeEvaluator sre = createExternSheetRefEvaluator(
aptg.getSheetName(), aptg.getLastSheetName(), aptg.getExternalWorkbookNumber());
return new LazyAreaEval(aptg.getFirstRow(), aptg.getFirstColumn(), return new LazyAreaEval(aptg.getFirstRow(), aptg.getFirstColumn(),
aptg.getLastRow(), aptg.getLastColumn(), sre); aptg.getLastRow(), aptg.getLastColumn(), sre);
} }

View File

@ -184,10 +184,8 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator {
* Sheets 1 through Sheet 3). * Sheets 1 through Sheet 3).
* This test, based on common test files for HSSF and XSSF, checks * This test, based on common test files for HSSF and XSSF, checks
* that we can correctly evaluate these * that we can correctly evaluate these
*
* TODO Fix this to pass for XSSF too, currently only passes for HSSF...
*/ */
public void DISABLEDtestMultiSheetReferencesHSSFandXSSF() throws Exception { public void testMultiSheetReferencesHSSFandXSSF() throws Exception {
Workbook[] wbs = new Workbook[] { Workbook[] wbs = new Workbook[] {
HSSFTestDataSamples.openSampleWorkbook("55906-MultiSheetRefs.xls"), HSSFTestDataSamples.openSampleWorkbook("55906-MultiSheetRefs.xls"),
XSSFTestDataSamples.openSampleWorkbook("55906-MultiSheetRefs.xlsx") XSSFTestDataSamples.openSampleWorkbook("55906-MultiSheetRefs.xlsx")