[]
Parameter 描述一个函数参数的元数据,包括其名称、描述、value type、默认值,以及参数是否可以接受引用或自定义对象。定义 CustomFunction 或 AsyncCustomFunction 实例的参数时使用此类。
class DiscountPriceFunction extends CustomFunction {
DiscountPriceFunction(Parameter[] parameters) {
super("DISCOUNT_PRICE", FunctionValueType.Number, parameters);
}
@Override
public Object evaluate(Object[] arguments, ICalcContext context) {
return (double) arguments[0] * (1 - (double) arguments[1]);
}
}
Parameter priceParameter = new Parameter("price", "Original price.", FunctionValueType.Number, 0d);
Parameter discountParameter = new Parameter("discount", "Discount rate.", FunctionValueType.Number, 0d);
Workbook.AddCustomFunction(new DiscountPriceFunction(new Parameter[] {
priceParameter,
discountParameter
}), true);
worksheet.getRange("A1").setFormula("=DISCOUNT_PRICE(100,0.15)");
Object discountedPrice = worksheet.getRange("A1").getValue();
Parameter(FunctionValueType valueType) Parameter(FunctionValueType valueType,
boolean acceptReference) Parameter(FunctionValueType valueType,
boolean acceptReference,
boolean acceptCustomObjects) Parameter(FunctionValueType valueType,
Object defaultValue) Parameter(FunctionValueType valueType,
Object defaultValue,
boolean acceptReference) Parameter(String name,
String description,
FunctionValueType valueType,
Object defaultValue) Parameter(String name,
String description,
FunctionValueType valueType,
Object defaultValue,
boolean acceptReference) Parameter(String name,
String description,
FunctionValueType valueType,
Object defaultValue,
boolean acceptReference,
boolean acceptCustomObjects) final booleanfinal Objectfinal Stringfinal StringgetName()final FunctionValueType此重载将 null 作为默认值传递给 Parameter(FunctionValueType,Object)。
valueType - 参数的值类型。此重载创建不带名称、描述或默认值的参数,并将默认值以 null 传递。
valueType - 参数的值类型。acceptReference - 如果此参数可以接受引用,则为 true;否则为 false。此重载创建不带名称或描述的参数,并为指定的 FunctionValueType 存储指定的默认值。
valueType - 参数的值类型。defaultValue - 参数的默认值。此重载创建不带名称或描述的参数,并为这两个值传递 null。
valueType - 参数的值类型。defaultValue - 参数的默认值。此值可以为 null。acceptReference - 如果此参数可以接受引用。使用指定的名称、描述、值类型和默认值创建参数定义。此重载会为 acceptReference 参数传递 false。
name - 参数的名称。此值可以为 null。description - 参数的描述。此值可以为 null。valueType - 参数的值类型。defaultValue - 参数的默认值。此值可以为 null。使用指定的名称、描述、值类型和默认值创建参数定义。此重载会为 acceptCustomObjects 参数传递 false 给 Parameter(String,String,FunctionValueType,Object,boolean,boolean)。
name - 参数的名称。此值可以为 null。description - 参数的描述。此值可以为 null。valueType - 参数的值类型。defaultValue - 参数的默认值。此值可以为 null。acceptReference - 如果此参数可以接受引用,则为 true;否则为 false。此重载创建不带名称、描述或默认值的参数,并将这些值以 null 传递给 Parameter(String,String,FunctionValueType,Object,boolean,boolean)。
将 acceptCustomObjects 设置为 true,可以在 valueType 为 FunctionValueType.Object 时允许自定义对象。
valueType - 参数的值类型。acceptReference - 如果此参数可以接受引用。acceptCustomObjects - 如果值类型是 FunctionValueType.Object,则接受自定义对象。定义自定义函数参数的元数据时使用此构造函数,包括参数是否接受引用,以及当值类型为 FunctionValueType.Object 时是否允许自定义对象。
name - 参数的名称。description - 参数的描述。valueType - 参数的值类型。defaultValue - 参数的默认值。acceptReference - 如果此参数可以接受引用,则为 true;否则为 false。acceptCustomObjects - 如果 valueType 为 FunctionValueType.Object 时此参数接受自定义对象,则为 true;否则为 false。此方法返回创建 Parameter 实例时指定的名称。定义 CustomFunction 或 AsyncCustomFunction 时,使用参数名称来标识实参。
Parameter priceParameter = new Parameter("price", "Original price.", FunctionValueType.Number, 0d);
Parameter discountParameter = new Parameter("discount", "Discount rate.", FunctionValueType.Number, 0d);
CustomFunction function = new DiscountPriceFunction(new Parameter[] {
priceParameter,
discountParameter
});
Workbook.AddCustomFunction(function, true);
String name = priceParameter.getName();
null。在定义 CustomFunction 或 AsyncCustomFunction 时,此描述提供关于参数用途的面向用户的信息。返回创建 Parameter 实例时指定的描述。
Parameter priceParameter = new Parameter("price", "Original price.", FunctionValueType.Number, 0d);
Parameter discountParameter = new Parameter("discount", "Discount rate.", FunctionValueType.Number, 0d);
CustomFunction function = new DiscountPriceFunction(new Parameter[] {
priceParameter,
discountParameter
});
Workbook.AddCustomFunction(function, true);
String description = discountParameter.getDescription();
null。此方法返回定义参数可接受值类型的 FunctionValueType,例如数字、文本、布尔值、变体或对象。返回值是创建 Parameter 实例时指定的类型。
Parameter amountParameter = new Parameter(FunctionValueType.Number, 0d);
CustomFunction function = new AddTaxFunction(new Parameter[] {
amountParameter,
new Parameter(FunctionValueType.Number, 0.08d)
});
Workbook.AddCustomFunction(function, true);
FunctionValueType valueType = amountParameter.getValueType();
此方法返回创建 Parameter 实例时指定的默认值。返回对象的类型取决于参数的 FunctionValueType。
Parameter taxRateParameter = new Parameter(FunctionValueType.Number, 0.08d);
CustomFunction function = new AddTaxFunction(new Parameter[] {
new Parameter(FunctionValueType.Number),
taxRateParameter
});
Workbook.AddCustomFunction(function, true);
worksheet.getRange("A1").setFormula("=ADD_TAX(100)");
Object total = worksheet.getRange("A1").getValue();
Object defaultValue = taxRateParameter.getDefaultValue();
null。使用此属性可以确定自定义函数参数是否可以接收单元格或区域引用,而不仅仅是被引用的值。
Parameter rangeParameter = new Parameter(FunctionValueType.Object, true);
CustomFunction function = new SumRangeFunction(new Parameter[] { rangeParameter });
Workbook.AddCustomFunction(function, true);
worksheet.getRange("A1:A3").setValue(new Object[][] {{1}, {2}, {3}});
worksheet.getRange("B1").setFormula("=SUM_RANGE(A1:A3)");
boolean acceptReference = rangeParameter.getAcceptReference();
true;否则返回 false。