blob: ef90818b3e83c94eb4da1f847ffd60a4669b4986 [file] [log] [blame]
using System.Collections.Generic;
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);
}
}