Update the XSSF getExternalSheet method signature, to start to prepare for sheet ranges
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1613439 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
4c8f3ab160
commit
3e2e01c149
@ -149,7 +149,7 @@ public final class HSSFEvaluationWorkbook implements FormulaRenderingWorkbook, E
|
|||||||
}
|
}
|
||||||
return sheet;
|
return sheet;
|
||||||
}
|
}
|
||||||
public ExternalSheet getExternalSheet(String sheetName, int externalWorkbookNumber) {
|
public ExternalSheet getExternalSheet(String firstSheetName, String lastSheetName, int externalWorkbookNumber) {
|
||||||
throw new IllegalStateException("XSSF-style external references are not supported for HSSF");
|
throw new IllegalStateException("XSSF-style external references are not supported for HSSF");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ public interface EvaluationWorkbook {
|
|||||||
* XSSF Only - fetch the external-style sheet details
|
* XSSF Only - fetch the external-style sheet details
|
||||||
* <p>Return will have no workbook set if it's actually in our own workbook</p>
|
* <p>Return will have no workbook set if it's actually in our own workbook</p>
|
||||||
*/
|
*/
|
||||||
ExternalSheet getExternalSheet(String sheetName, int externalWorkbookNumber);
|
ExternalSheet getExternalSheet(String firstSheetName, String lastSheetName, int externalWorkbookNumber);
|
||||||
/**
|
/**
|
||||||
* HSSF Only - convert an external sheet index to an internal sheet index,
|
* HSSF Only - convert an external sheet index to an internal sheet index,
|
||||||
* for an external-style reference to one of this workbook's own sheets
|
* for an external-style reference to one of this workbook's own sheets
|
||||||
|
@ -79,7 +79,7 @@ public final class OperationEvaluationContext {
|
|||||||
return createExternSheetRefEvaluator(ptg.getExternSheetIndex());
|
return createExternSheetRefEvaluator(ptg.getExternSheetIndex());
|
||||||
}
|
}
|
||||||
SheetRefEvaluator createExternSheetRefEvaluator(String sheetName, int externalWorkbookNumber) {
|
SheetRefEvaluator createExternSheetRefEvaluator(String sheetName, int externalWorkbookNumber) {
|
||||||
ExternalSheet externalSheet = _workbook.getExternalSheet(sheetName, externalWorkbookNumber);
|
ExternalSheet externalSheet = _workbook.getExternalSheet(sheetName, null, externalWorkbookNumber);
|
||||||
return createExternSheetRefEvaluator(externalSheet);
|
return createExternSheetRefEvaluator(externalSheet);
|
||||||
}
|
}
|
||||||
SheetRefEvaluator createExternSheetRefEvaluator(int externSheetIndex) {
|
SheetRefEvaluator createExternSheetRefEvaluator(int externSheetIndex) {
|
||||||
@ -316,7 +316,7 @@ public final class OperationEvaluationContext {
|
|||||||
return getExternalNameXEval(externName, workbookName);
|
return getExternalNameXEval(externName, workbookName);
|
||||||
}
|
}
|
||||||
public ValueEval getNameXEval(NameXPxg nameXPxg) {
|
public ValueEval getNameXEval(NameXPxg nameXPxg) {
|
||||||
ExternalSheet externSheet = _workbook.getExternalSheet(nameXPxg.getSheetName(), nameXPxg.getExternalWorkbookNumber());
|
ExternalSheet externSheet = _workbook.getExternalSheet(nameXPxg.getSheetName(), null, nameXPxg.getExternalWorkbookNumber());
|
||||||
if(externSheet == null || externSheet.getWorkbookName() == null) {
|
if(externSheet == null || externSheet.getWorkbookName() == null) {
|
||||||
// External reference to our own workbook's name
|
// External reference to our own workbook's name
|
||||||
return getLocalNameXEval(nameXPxg);
|
return getLocalNameXEval(nameXPxg);
|
||||||
|
@ -90,8 +90,8 @@ final class ForkedEvaluationWorkbook implements EvaluationWorkbook {
|
|||||||
public ExternalSheet getExternalSheet(int externSheetIndex) {
|
public ExternalSheet getExternalSheet(int externSheetIndex) {
|
||||||
return _masterBook.getExternalSheet(externSheetIndex);
|
return _masterBook.getExternalSheet(externSheetIndex);
|
||||||
}
|
}
|
||||||
public ExternalSheet getExternalSheet(String sheetName, int externalWorkbookNumber) {
|
public ExternalSheet getExternalSheet(String firstSheetName, String lastSheetName, int externalWorkbookNumber) {
|
||||||
return _masterBook.getExternalSheet(sheetName, externalWorkbookNumber);
|
return _masterBook.getExternalSheet(firstSheetName, lastSheetName, externalWorkbookNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Ptg[] getFormulaTokens(EvaluationCell cell) {
|
public Ptg[] getFormulaTokens(EvaluationCell cell) {
|
||||||
|
@ -233,15 +233,22 @@ public final class XSSFEvaluationWorkbook implements FormulaRenderingWorkbook, E
|
|||||||
public ExternalSheet getExternalSheet(int externSheetIndex) {
|
public ExternalSheet getExternalSheet(int externSheetIndex) {
|
||||||
throw new IllegalStateException("HSSF-style external references are not supported for XSSF");
|
throw new IllegalStateException("HSSF-style external references are not supported for XSSF");
|
||||||
}
|
}
|
||||||
public ExternalSheet getExternalSheet(String sheetName, int externalWorkbookNumber) {
|
public ExternalSheet getExternalSheet(String firstSheetName, String lastSheetName, int externalWorkbookNumber) {
|
||||||
|
String workbookName;
|
||||||
if (externalWorkbookNumber > 0) {
|
if (externalWorkbookNumber > 0) {
|
||||||
// External reference - reference is 1 based, link table is 0 based
|
// External reference - reference is 1 based, link table is 0 based
|
||||||
int linkNumber = externalWorkbookNumber - 1;
|
int linkNumber = externalWorkbookNumber - 1;
|
||||||
ExternalLinksTable linkTable = _uBook.getExternalLinksTable().get(linkNumber);
|
ExternalLinksTable linkTable = _uBook.getExternalLinksTable().get(linkNumber);
|
||||||
return new ExternalSheet(linkTable.getLinkedFileName(), sheetName);
|
workbookName = linkTable.getLinkedFileName();
|
||||||
} else {
|
} else {
|
||||||
// Internal reference
|
// Internal reference
|
||||||
return new ExternalSheet(null, sheetName);
|
workbookName = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lastSheetName == null || firstSheetName.equals(lastSheetName)) {
|
||||||
|
return new ExternalSheet(workbookName, firstSheetName);
|
||||||
|
} else {
|
||||||
|
return new ExternalSheetRange(workbookName, firstSheetName, lastSheetName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user