SheetRefEvaluator CreateExternSheetRefEvaluator(int externSheetIndex) { ExternalSheet externalSheet = _workbook.GetExternalSheet(externSheetIndex); WorkbookEvaluator targetEvaluator; int otherSheetIndex; if (externalSheet == null) { // sheet is in same workbook otherSheetIndex = _workbook.ConvertFromExternSheetIndex(externSheetIndex); targetEvaluator = _bookEvaluator; } else { // look up sheet by name from external workbook String workbookName = externalSheet.GetWorkbookName(); try { targetEvaluator = _bookEvaluator.GetOtherWorkbookEvaluator(workbookName); } catch (WorkbookNotFoundException) { throw; } otherSheetIndex = targetEvaluator.GetSheetIndex(externalSheet.GetSheetName()); if (otherSheetIndex < 0) { throw new Exception("Invalid sheet name '" + externalSheet.GetSheetName() + "' in bool '" + workbookName + "'."); } } return(new SheetRefEvaluator(targetEvaluator, _tracker, otherSheetIndex)); }
SheetRangeEvaluator CreateExternSheetRefEvaluator(ExternalSheet externalSheet) { WorkbookEvaluator targetEvaluator; int otherFirstSheetIndex; int otherLastSheetIndex = -1; if (externalSheet == null || externalSheet.WorkbookName == null) { // sheet is in same workbook targetEvaluator = _bookEvaluator; otherFirstSheetIndex = _workbook.GetSheetIndex(externalSheet.SheetName); if (externalSheet is ExternalSheetRange) { String lastSheetName = ((ExternalSheetRange)externalSheet).LastSheetName; otherLastSheetIndex = _workbook.GetSheetIndex(lastSheetName); } } else { // look up sheet by name from external workbook String workbookName = externalSheet.WorkbookName; try { targetEvaluator = _bookEvaluator.GetOtherWorkbookEvaluator(workbookName); } catch (WorkbookNotFoundException e) { throw new RuntimeException(e.Message, e); } otherFirstSheetIndex = targetEvaluator.GetSheetIndex(externalSheet.SheetName); if (externalSheet is ExternalSheetRange) { String lastSheetName = ((ExternalSheetRange)externalSheet).LastSheetName; otherLastSheetIndex = targetEvaluator.GetSheetIndex(lastSheetName); } if (otherFirstSheetIndex < 0) { throw new Exception("Invalid sheet name '" + externalSheet.SheetName + "' in bool '" + workbookName + "'."); } } if (otherLastSheetIndex == -1) { // Reference to just one sheet otherLastSheetIndex = otherFirstSheetIndex; } SheetRefEvaluator[] Evals = new SheetRefEvaluator[otherLastSheetIndex - otherFirstSheetIndex + 1]; for (int i = 0; i < Evals.Length; i++) { int otherSheetIndex = i + otherFirstSheetIndex; Evals[i] = new SheetRefEvaluator(targetEvaluator, _tracker, otherSheetIndex); } return(new SheetRangeEvaluator(otherFirstSheetIndex, otherLastSheetIndex, Evals)); }