| using System; | |
| using System.Collections.Generic; | |
| using System.Linq; | |
| using System.Text; | |
| using OfficeOpenXml.FormulaParsing.ExpressionGraph; | |
| namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Information | |
| { | |
| public class IsErr : ErrorHandlingFunction | |
| { | |
| public override CompileResult Execute(IEnumerable<FunctionArgument> arguments, ParsingContext context) | |
| { | |
| var isError = new IsError(); | |
| var result = isError.Execute(arguments, context); | |
| if ((bool) result.Result) | |
| { | |
| var arg = GetFirstValue(arguments); | |
| if (arg is ExcelDataProvider.IRangeInfo) | |
| { | |
| var r = (ExcelDataProvider.IRangeInfo)arg; | |
| var e=r.GetValue(r.Address._fromRow, r.Address._fromCol) as ExcelErrorValue; | |
| if (e !=null && e.Type==eErrorType.NA) | |
| { | |
| return CreateResult(false, DataType.Boolean); | |
| } | |
| } | |
| else | |
| { | |
| if (arg is ExcelErrorValue && ((ExcelErrorValue)arg).Type==eErrorType.NA) | |
| { | |
| return CreateResult(false, DataType.Boolean); | |
| } | |
| } | |
| } | |
| return result; | |
| } | |
| public override CompileResult HandleError(string errorCode) | |
| { | |
| return CreateResult(true, DataType.Boolean); | |
| } | |
| } | |
| } |