文档彩票走势图>>Spread Studio for .NET使用教程>>Spread Studio for .NET使用教程:创建自定义函数
Spread Studio for .NET使用教程:创建自定义函数
如果需要定期使用一个非内置函数或者是将多个内置函数合并成一个独立的函数,那么你可以定义自己的自定义函数。这些自定义函数可以用来调用任意内置函数。
一个自定义函数的名称可以和内置函数相同。自定义函数优先级别高于内置函数。自定义函数是动态链接的。因此,应用程序可以重新定义现有的自定义函数。
使用代码:
1、 定义自定义函数。
2、 在表格中注册函数。
3、 使用自定义函数。
示例:创建、注册、使用三个自定义函数
第一步是创建一个自定义函数。在这个例子中,我们创建三个自定义函数:一个立方体的数学函数,一个XOR逻辑函数,和一个空字符串函数。下面是具体的实现代码。
CUBE定制函数是用来计算数字的三次方。即,CUBE(x)相当于POWER(x,3)。
C#
public class CubeFunctionInfo : FunctionInfo { public override string Name { get { return "CUBE"; } } public override int MinArgs { get { return 1; } } public override int MaxArgs { get { return 1; } } public override object Evaluate (object[] args) { double num = CalcConvert.ToDouble(args[0]); return num * num * num; } }
XOR自定义函数执行两个布尔值的专用OR运行。这是类似于C语言的 "^"操作或者是VB中的XOR操作。
C#
public class XorFunctionInfo : FunctionInfo { public override string Name { get { return "XOR"; } } public override int MinArgs { get { return 2; } } public override int MaxArgs { get { return 2; } } public override object Evaluate (object[] args) { bool arg0 = CalcConvert.ToBool(args[0]); bool arg1 = CalcConvert.ToBool(args[1]); return (arg0 || arg1) && (arg0 != arg1); } }
NULL函数返回恒量值NULL。(类似于FALSE()函数返回恒量值false)。
C#
public class NullFunctionInfo : FunctionInfo { public override string Name { get { return "NULL"; } } public override int MinArgs { get { return 0; } } public override int MaxArgs { get { return 0; } } public override object Evaluate (object[] args) { return null; } }
第二步是使用下面的代码片段注册自定义函数。
C#
FpSpread1.ActiveSheetView.AddCustomFunction(new CubeFunctionInfo()); FpSpread1.ActiveSheetView.AddCustomFunction(new XorFunctionInfo()); FpSpread1.ActiveSheetView.AddCustomFunction(new NullFunctionInfo());
第三步是在公式中使用自定义函数,如下面的代码所示。
C#
FpSpread1.ActiveSheetView.SetFormula(0, 0, "CUBE(5)"); FpSpread1.ActiveSheetView.SetFormula(1, 0, "XOR(FALSE,FALSE)"); FpSpread1.ActiveSheetView.SetFormula(1, 1, "XOR(TRUE,FALSE)"); FpSpread1.ActiveSheetView.SetFormula(1, 2, "XOR(FALSE,TRUE)"); FpSpread1.ActiveSheetView.SetFormula(1, 3, "XOR(TRUE,TRUE)"); FpSpread1.ActiveSheetView.SetFormula(2, 0, "CHOOSE(1,100,NULL(),300)"); FpSpread1.ActiveSheetView.SetFormula(2, 1, "CHOOSE(2,100,NULL(),300)"); FpSpread1.ActiveSheetView.SetFormula(2, 2, "CHOOSE(3,100,NULL(),300)");