The IFunction interface is used to implement custom Excel functions in .NET to be passed in to ExcelWriter Application; see Workbook.RegisterCustomFunction for more details.

public interface IFunction
{
    FunctionValue Calculate(IList<FunctionValue> args, Cell currentCell);
}
Public Interface IFunction
    Function Calculate(args As IList(Of FunctionValue), currentCell As Cell) As FunctionValue
End Interface
class Concat : IFunction
    {
        public FunctionValue Calculate(IList<FunctionValue> args, Cell currentCell)
        {
            StringBuilder result = new StringBuilder("");
            foreach (FunctionValue arg in args)
            {
                result.Append(',');
                switch (arg.Type)
                {
                    case FunctionValueType.BOOLEAN:
                        result.Append((bool)arg.Value ? "True" : "False");
                        break;
                    case FunctionValueType.STRING:
                        result.Append(arg.Value);
                        break;
                    case FunctionValueType.NUMBER:
                        result.Append(((double)arg.Value).ToString("0.#####"));
                        break;
                    case FunctionValueType.NULL:
                        result.Append(' ');
                        break;
                    case FunctionValueType.RANGE:
                        result.Append(arg.Value.ToString());
                        break;
                }
            }
            return new FunctionValue(result.ToString());
        }
    }
Class Concat
	Implements IFunction
	Public Function Calculate(args As IList(Of FunctionValue), currentCell As Cell) As FunctionValue
		Dim result As New StringBuilder("")
		
		For Each arg As FunctionValue In args
			result.Append(",")

			Select Case arg.Type
				Case FunctionValueType.[BOOLEAN]
					result.Append(If(CBool(arg.Value), "True", "False"))
					Exit Select
				Case FunctionValueType.[STRING]
					result.Append(arg.Value)
					Exit Select
				Case FunctionValueType.NUMBER
					result.Append(CDbl(arg.Value).ToString("0.#####"))
					Exit Select
				Case FunctionValueType.NULL
					result.Append(" ")
					Exit Select
				Case FunctionValueType.RANGE
					result.Append(arg.Value.ToString())
					Exit Select
			End Select
		Next
		Return New FunctionValue(result.ToString())
	End Function
End Class

Name

Description

Calculate(IList<FunctionValue>,Cell)