Class ExcelFunction
Base class for Excel function implementations.
Inheritance
System.Object
ExcelFunction
Inherited Members
System.Object.Equals(System.Object)
System.Object.Equals(System.Object, System.Object)
System.Object.GetHashCode()
System.Object.GetType()
System.Object.MemberwiseClone()
System.Object.ReferenceEquals(System.Object, System.Object)
System.Object.ToString()
Assembly: EPPlus.dll
public abstract class ExcelFunction
Constructors
Declaration
Declaration
public ExcelFunction(ArgumentCollectionUtil argumentCollectionUtil, ArgumentParsers argumentParsers, CompileResultValidators compileResultValidators)
Parameters
Fields
Declaration
protected readonly int NumberOfSignificantFigures
Field Value
| Type |
Description |
| System.Int32 |
|
Properties
Declaration
public virtual bool IsErrorHandlingFunction { get; }
Property Value
| Type |
Description |
| System.Boolean |
|
Declaration
public virtual bool IsLookupFuction { get; }
Property Value
| Type |
Description |
| System.Boolean |
|
Methods
Helper method for comparison of two doubles.
Declaration
protected bool AreEqual(double d1, double d2)
Parameters
| Type |
Name |
Description |
| System.Double |
d1 |
|
| System.Double |
d2 |
|
Returns
| Type |
Description |
| System.Boolean |
|
ArgsToDoubleEnumerable(Boolean, Boolean, IEnumerable<FunctionArgument>, ParsingContext)
Will return the arguments as an enumerable of doubles.
Declaration
protected virtual IEnumerable<ExcelDoubleCellValue> ArgsToDoubleEnumerable(bool ignoreHiddenCells, bool ignoreErrors, IEnumerable<FunctionArgument> arguments, ParsingContext context)
Parameters
| Type |
Name |
Description |
| System.Boolean |
ignoreHiddenCells |
If a cell is hidden and this value is true the value of that cell will be ignored
|
| System.Boolean |
ignoreErrors |
If a cell contains an error, that error will be ignored if this method is set to true
|
| System.Collections.Generic.IEnumerable<FunctionArgument> |
arguments |
|
| ParsingContext |
context |
|
Returns
ArgsToDoubleEnumerable(Boolean, IEnumerable<FunctionArgument>, ParsingContext)
Will return the arguments as an enumerable of doubles.
Declaration
protected virtual IEnumerable<ExcelDoubleCellValue> ArgsToDoubleEnumerable(bool ignoreHiddenCells, IEnumerable<FunctionArgument> arguments, ParsingContext context)
Parameters
| Type |
Name |
Description |
| System.Boolean |
ignoreHiddenCells |
If a cell is hidden and this value is true the value of that cell will be ignored
|
| System.Collections.Generic.IEnumerable<FunctionArgument> |
arguments |
|
| ParsingContext |
context |
|
Returns
ArgsToDoubleEnumerable(IEnumerable<FunctionArgument>, ParsingContext)
Will return the arguments as an enumerable of doubles.
Declaration
protected virtual IEnumerable<ExcelDoubleCellValue> ArgsToDoubleEnumerable(IEnumerable<FunctionArgument> arguments, ParsingContext context)
Parameters
Returns
ArgsToDoubleEnumerableZeroPadded(Boolean, ExcelDataProvider.IRangeInfo, ParsingContext)
Declaration
protected virtual IEnumerable<double> ArgsToDoubleEnumerableZeroPadded(bool ignoreHiddenCells, ExcelDataProvider.IRangeInfo rangeInfo, ParsingContext context)
Parameters
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<System.Double> |
|
ArgsToObjectEnumerable(Boolean, IEnumerable<FunctionArgument>, ParsingContext)
Will return the arguments as an enumerable of objects.
Declaration
protected virtual IEnumerable<object> ArgsToObjectEnumerable(bool ignoreHiddenCells, IEnumerable<FunctionArgument> arguments, ParsingContext context)
Parameters
| Type |
Name |
Description |
| System.Boolean |
ignoreHiddenCells |
If a cell is hidden and this value is true the value of that cell will be ignored
|
| System.Collections.Generic.IEnumerable<FunctionArgument> |
arguments |
|
| ParsingContext |
context |
|
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<System.Object> |
|
Declaration
protected string ArgToAddress(IEnumerable<FunctionArgument> arguments, int index)
Parameters
| Type |
Name |
Description |
| System.Collections.Generic.IEnumerable<FunctionArgument> |
arguments |
|
| System.Int32 |
index |
|
Returns
| Type |
Description |
| System.String |
|
ArgToAddress(IEnumerable<FunctionArgument>, Int32, ParsingContext)
Declaration
protected string ArgToAddress(IEnumerable<FunctionArgument> arguments, int index, ParsingContext context)
Parameters
Returns
| Type |
Description |
| System.String |
|
If the argument is a boolean value its value will be returned.
If the argument is an integer value, true will be returned if its
value is not 0, otherwise false.
Declaration
protected bool ArgToBool(IEnumerable<FunctionArgument> arguments, int index)
Parameters
| Type |
Name |
Description |
| System.Collections.Generic.IEnumerable<FunctionArgument> |
arguments |
|
| System.Int32 |
index |
|
Returns
| Type |
Description |
| System.Boolean |
|
Returns the value of the argument att the position of the 0-based
index as a System.Double.
Declaration
protected double ArgToDecimal(IEnumerable<FunctionArgument> arguments, int index)
Parameters
| Type |
Name |
Description |
| System.Collections.Generic.IEnumerable<FunctionArgument> |
arguments |
|
| System.Int32 |
index |
|
Returns
| Type |
Description |
| System.Double |
Value of the argument as an integer.
|
Exceptions
Returns the value of the argument att the position of the 0-based
index as a System.Double.
Declaration
protected double ArgToDecimal(IEnumerable<FunctionArgument> arguments, int index, PrecisionAndRoundingStrategy precisionAndRoundingStrategy)
Parameters
| Type |
Name |
Description |
| System.Collections.Generic.IEnumerable<FunctionArgument> |
arguments |
|
| System.Int32 |
index |
|
| PrecisionAndRoundingStrategy |
precisionAndRoundingStrategy |
strategy for handling precision and rounding of double values
|
Returns
| Type |
Description |
| System.Double |
Value of the argument as an integer.
|
Exceptions
Returns the value of the argument att the position of the 0-based
Declaration
protected double ArgToDecimal(object obj)
Parameters
| Type |
Name |
Description |
| System.Object |
obj |
|
Returns
| Type |
Description |
| System.Double |
Value of the argument as a double.
|
Exceptions
Returns the value of the argument att the position of the 0-based
Declaration
protected double ArgToDecimal(object obj, PrecisionAndRoundingStrategy precisionAndRoundingStrategy)
Parameters
| Type |
Name |
Description |
| System.Object |
obj |
|
| PrecisionAndRoundingStrategy |
precisionAndRoundingStrategy |
strategy for handling precision and rounding of double values
|
Returns
| Type |
Description |
| System.Double |
Value of the argument as a double.
|
Exceptions
Returns the value of the argument att the position of the 0-based
index as an integer.
Declaration
protected int ArgToInt(IEnumerable<FunctionArgument> arguments, int index)
Parameters
| Type |
Name |
Description |
| System.Collections.Generic.IEnumerable<FunctionArgument> |
arguments |
|
| System.Int32 |
index |
|
Returns
| Type |
Description |
| System.Int32 |
Value of the argument as an integer.
|
Exceptions
Declaration
protected ExcelDataProvider.IRangeInfo ArgToRangeInfo(IEnumerable<FunctionArgument> arguments, int index)
Parameters
| Type |
Name |
Description |
| System.Collections.Generic.IEnumerable<FunctionArgument> |
arguments |
|
| System.Int32 |
index |
|
Returns
Returns the value of the argument att the position of the 0-based
index as a string.
Declaration
protected string ArgToString(IEnumerable<FunctionArgument> arguments, int index)
Parameters
| Type |
Name |
Description |
| System.Collections.Generic.IEnumerable<FunctionArgument> |
arguments |
|
| System.Int32 |
index |
|
Returns
| Type |
Description |
| System.String |
Value of the argument as a string.
|
BeforeInvoke(ParsingContext)
If overridden, this method is called before Execute is called.
Declaration
public virtual void BeforeInvoke(ParsingContext context)
Parameters
Use this method to apply a function on a collection of arguments. The result
should be modifyed in the supplied action and will contain the result
after this operation has been performed.
Declaration
protected virtual double CalculateCollection(IEnumerable<FunctionArgument> collection, double result, Func<FunctionArgument, double, double> action)
Parameters
| Type |
Name |
Description |
| System.Collections.Generic.IEnumerable<FunctionArgument> |
collection |
|
| System.Double |
result |
|
| System.Func<FunctionArgument, System.Double, System.Double> |
action |
|
Returns
| Type |
Description |
| System.Double |
|
Declaration
protected void CheckForAndHandleExcelError(FunctionArgument arg)
Parameters
Exceptions
Declaration
protected void CheckForAndHandleExcelError(ExcelDataProvider.ICellInfo cell)
Parameters
Declaration
protected CompileResult CreateResult(eErrorType errorType)
Parameters
Returns
Use this method to create a result to return from Excel functions.
Declaration
protected CompileResult CreateResult(object result, DataType dataType)
Parameters
| Type |
Name |
Description |
| System.Object |
result |
|
| DataType |
dataType |
|
Returns
Declaration
protected double Divide(double left, double right)
Parameters
| Type |
Name |
Description |
| System.Double |
left |
|
| System.Double |
right |
|
Returns
| Type |
Description |
| System.Double |
|
Execute(IEnumerable<FunctionArgument>, ParsingContext)
Declaration
public abstract CompileResult Execute(IEnumerable<FunctionArgument> arguments, ParsingContext context)
Parameters
Returns
Used for some Lookupfunctions to indicate that function arguments should
not be compiled before the function is called.
Declaration
protected object GetFirstValue(IEnumerable<FunctionArgument> val)
Parameters
| Type |
Name |
Description |
| System.Collections.Generic.IEnumerable<FunctionArgument> |
val |
|
Returns
| Type |
Description |
| System.Object |
|
Declaration
protected CompileResult GetResultByObject(object result)
Parameters
| Type |
Name |
Description |
| System.Object |
result |
|
Returns
Declaration
protected bool IsBool(object val)
Parameters
| Type |
Name |
Description |
| System.Object |
val |
|
Returns
| Type |
Description |
| System.Boolean |
|
Declaration
protected bool IsInteger(object n)
Parameters
| Type |
Name |
Description |
| System.Object |
n |
|
Returns
| Type |
Description |
| System.Boolean |
|
Declaration
protected bool IsNumeric(object val)
Parameters
| Type |
Name |
Description |
| System.Object |
val |
|
Returns
| Type |
Description |
| System.Boolean |
|
Declaration
protected bool IsNumericString(object value)
Parameters
| Type |
Name |
Description |
| System.Object |
value |
|
Returns
| Type |
Description |
| System.Boolean |
|
Declaration
protected bool IsString(object val, bool allowNullOrEmpty = true)
Parameters
| Type |
Name |
Description |
| System.Object |
val |
|
| System.Boolean |
allowNullOrEmpty |
|
Returns
| Type |
Description |
| System.Boolean |
|
Throws an System.ArgumentException if condition evaluates to true.
Declaration
protected void ThrowArgumentExceptionIf(Func<bool> condition, string message)
Parameters
| Type |
Name |
Description |
| System.Func<System.Boolean> |
condition |
|
| System.String |
message |
|
Exceptions
| Type |
Condition |
| System.ArgumentException |
|
Throws an System.ArgumentException if condition evaluates to true.
Declaration
protected void ThrowArgumentExceptionIf(Func<bool> condition, string message, params object[] formats)
Parameters
| Type |
Name |
Description |
| System.Func<System.Boolean> |
condition |
|
| System.String |
message |
|
| System.Object[] |
formats |
Formats to the message string.
|
Declaration
protected void ThrowExcelErrorValueException(eErrorType errorType)
Parameters
Declaration
protected void ThrowExcelErrorValueException(ExcelErrorValue value)
Parameters
Throws an System.ArgumentException if condition evaluates to true.
Declaration
protected void ThrowExcelErrorValueExceptionIf(Func<bool> condition, eErrorType errorType)
Parameters
| Type |
Name |
Description |
| System.Func<System.Boolean> |
condition |
|
| eErrorType |
errorType |
|
Exceptions
This functions validates that the supplied arguments contains at least
(the value of) minLength elements. If one of the arguments is an
ExcelDataProvider.IRangeInfo the number of cells in
that range will be counted as well.
Declaration
protected void ValidateArguments(IEnumerable<FunctionArgument> arguments, int minLength)
Parameters
| Type |
Name |
Description |
| System.Collections.Generic.IEnumerable<FunctionArgument> |
arguments |
|
| System.Int32 |
minLength |
|
Exceptions
| Type |
Condition |
| System.ArgumentException |
|
This functions validates that the supplied arguments contains at least
(the value of) minLength elements. If one of the arguments is an
ExcelDataProvider.IRangeInfo the number of cells in
that range will be counted as well.
Declaration
protected void ValidateArguments(IEnumerable<FunctionArgument> arguments, int minLength, eErrorType errorTypeToThrow)
Parameters