ExcelFormulaParser.Engine.Excel.Functions.RefAndLookup.Address.Execute C# (CSharp) Method

Execute() public method

public Execute ( IEnumerable arguments, ParsingContext context ) : CompileResult
arguments IEnumerable
context ParsingContext
return ExcelFormulaParser.Engine.ExpressionGraph.CompileResult
        public override CompileResult Execute(IEnumerable<FunctionArgument> arguments, ParsingContext context)
        {
            ValidateArguments(arguments, 2);
            var row = ArgToInt(arguments, 0) - 1;
            var col = ArgToInt(arguments, 1) - 1;
            ThrowExcelFunctionExceptionIf(() => row < 0 && col < 0, ExcelErrorCodes.Value);
            var referenceType = ExcelReferenceType.AbsoluteRowAndColumn;
            var worksheetSpec = string.Empty;
            if (arguments.Count() > 2)
            {
                var arg3 = ArgToInt(arguments, 2);
                ThrowExcelFunctionExceptionIf(() => arg3 < 1 || arg3 > 4, ExcelErrorCodes.Value);
                referenceType = (ExcelReferenceType)ArgToInt(arguments, 2);
            }
            if (arguments.Count() > 3)
            {
                var fourthArg = arguments.ElementAt(3).Value;
                if(fourthArg.GetType().Equals(typeof(bool)) && !(bool)fourthArg)
                {
                    throw new InvalidOperationException("Excelformulaparser does not support the R1C1 format!");
                }
                if (fourthArg.GetType().Equals(typeof(string)))
                {
                    worksheetSpec = fourthArg.ToString() + "!";
                }
            }
            var translator = new IndexToAddressTranslator(context.ExcelDataProvider, referenceType);
            return CreateResult(worksheetSpec + translator.ToAddress(col, row), DataType.ExcelAddress);
        }

Usage Example

 public void AddressShouldThrowIfR1C1FormatIsSpecified()
 {
     var func = new Address();
     var parsingContext = ParsingContext.Create();
     parsingContext.ExcelDataProvider = MockRepository.GenerateStub<ExcelDataProvider>();
     parsingContext.ExcelDataProvider.Stub(x => x.ExcelMaxRows).Return(10);
     var result = func.Execute(FunctionsHelper.CreateArgs(1, 2, (int)ExcelReferenceType.RelativeRowAndColumn, false), parsingContext);
 }
All Usage Examples Of ExcelFormulaParser.Engine.Excel.Functions.RefAndLookup.Address::Execute
Address