public ValueEval GetNameXEval(NameXPtg nameXPtg)
 {
     ExternalSheet externSheet = _workbook.GetExternalSheet(nameXPtg.SheetRefIndex);
     if (externSheet == null)
         return new NameXEval(nameXPtg);
     String workbookName = externSheet.GetWorkbookName();
     ExternalName externName = _workbook.GetExternalName(
           nameXPtg.SheetRefIndex,
           nameXPtg.NameIndex
     );
     try
     {
         WorkbookEvaluator refWorkbookEvaluator = _bookEvaluator.GetOtherWorkbookEvaluator(workbookName);
         IEvaluationName evaluationName = refWorkbookEvaluator.GetName(externName.Name, externName.Ix - 1);
         if (evaluationName != null && evaluationName.HasFormula)
         {
             if (evaluationName.NameDefinition.Length > 1)
             {
                 throw new Exception("Complex name formulas not supported yet");
             }
             Ptg ptg = evaluationName.NameDefinition[0];
             if (ptg is Ref3DPtg)
             {
                 Ref3DPtg ref3D = (Ref3DPtg)ptg;
                 int sheetIndex = refWorkbookEvaluator.GetSheetIndexByExternIndex(ref3D.ExternSheetIndex);
                 String sheetName = refWorkbookEvaluator.GetSheetName(sheetIndex);
                 SheetRefEvaluator sre = CreateExternSheetRefEvaluator(workbookName, sheetName);
                 return new LazyRefEval(ref3D.Row, ref3D.Column, sre);
             }
             else if (ptg is Area3DPtg)
             {
                 Area3DPtg area3D = (Area3DPtg)ptg;
                 int sheetIndex = refWorkbookEvaluator.GetSheetIndexByExternIndex(area3D.ExternSheetIndex);
                 String sheetName = refWorkbookEvaluator.GetSheetName(sheetIndex);
                 SheetRefEvaluator sre = CreateExternSheetRefEvaluator(workbookName, sheetName);
                 return new LazyAreaEval(area3D.FirstRow, area3D.FirstColumn, area3D.LastRow, area3D.LastColumn, sre);
             }
         }
         return ErrorEval.REF_INVALID;
     }
     catch (WorkbookNotFoundException)
     {
         return ErrorEval.REF_INVALID;
     }
 }
 public String ResolveNameXText(NameXPtg n)
 {
     return _iBook.ResolveNameXText(n.SheetRefIndex, n.NameIndex);
 }
示例#3
0
 public NameXEval(NameXPtg ptg)
 {
     _ptg = ptg;
 }