[]
A CalcReference encapsulates one or more worksheet ranges that are used as a calculation reference. You can use this class to inspect whether the reference spans multiple areas, refers to another workbook, or represents a 3D reference, and to retrieve the referenced IRange objects or their values.
CustomFunction function = new CustomFunction(
"REFVALUES",
FunctionValueType.Object,
new Parameter[] { new Parameter(FunctionValueType.Object, true, false) }) {
public Object evaluate(Object[] arguments, ICalcContext context) {
CalcReference reference = (CalcReference) arguments[0];
return reference.getValues();
}
};
Workbook.AddCustomFunction(function);
worksheet.getRange("A1:B2").setValue(new Object[][] {{1, 2}, {3, 4}});
worksheet.getRange("C1").setFormula2("=REFVALUES(A1:B2)");
Object result = worksheet.getRange("C1").getValue();
final booleanfinal booleanfinal intfinal Object
CustomFunction function = new CustomFunction(
"REFRANGECOUNT",
FunctionValueType.Number,
new Parameter[] { new Parameter(FunctionValueType.Object, true, false) }) {
public Object evaluate(Object[] arguments, ICalcContext context) {
CalcReference reference = (CalcReference) arguments[0];
return reference.getRangeCount();
}
};
Workbook.AddCustomFunction(function);
worksheet.getRange("A1:B2").setValue(new Object[][] {{1, 2}, {3, 4}});
worksheet.getRange("C1").setFormula("=REFRANGECOUNT(A1:B2)");
Object rangeCount = worksheet.getRange("C1").getValue();
CustomFunction function = new CustomFunction(
"ISEXTERNALREF",
FunctionValueType.Boolean,
new Parameter[] { new Parameter(FunctionValueType.Object, true, false) }) {
public Object evaluate(Object[] arguments, ICalcContext context) {
CalcReference reference = (CalcReference) arguments[0];
return reference.getIsExternalReference();
}
};
Workbook.AddCustomFunction(function);
worksheet.getRange("A1:B2").setValue(new Object[][] {{1, 2}, {3, 4}});
worksheet.getRange("C1").setFormula("=ISEXTERNALREF(A1:B2)");
Object external = worksheet.getRange("C1").getValue();
CustomFunction function = new CustomFunction(
"IS3DREF",
FunctionValueType.Boolean,
new Parameter[] { new Parameter(FunctionValueType.Object, true, false) }) {
public Object evaluate(Object[] arguments, ICalcContext context) {
CalcReference reference = (CalcReference) arguments[0];
return reference.getIs3DReference();
}
};
Workbook.AddCustomFunction(function);
worksheet.getRange("A1:B2").setValue(new Object[][] {{1, 2}, {3, 4}});
worksheet.getRange("C1").setFormula("=IS3DREF(A1:B2)");
Object is3D = worksheet.getRange("C1").getValue();
CustomFunction function = new CustomFunction(
"REFRANGES",
FunctionValueType.Number,
new Parameter[] { new Parameter(FunctionValueType.Object, true, false) }) {
public Object evaluate(Object[] arguments, ICalcContext context) {
CalcReference reference = (CalcReference) arguments[0];
return reference.getRanges().size();
}
};
Workbook.AddCustomFunction(function);
worksheet.getRange("A1:B2").setValue(new Object[][] {{1, 2}, {3, 4}});
worksheet.getRange("C1").setFormula("=REFRANGES(A1:B2)");
Object rangeCount = worksheet.getRange("C1").getValue();
Use this method in custom-function evaluation logic to retrieve the values represented by a CalcReference argument.
CustomFunction function = new CustomFunction(
"REFVALUES",
FunctionValueType.Object,
new Parameter[] { new Parameter(FunctionValueType.Object, true, false) }) {
public Object evaluate(Object[] arguments, ICalcContext context) {
CalcReference reference = (CalcReference) arguments[0];
return reference.getValues();
}
};
Workbook.AddCustomFunction(function);
worksheet.getRange("A1:B2").setValue(new Object[][] {{1, 2}, {3, 4}});
worksheet.getRange("C1").setFormula2("=REFVALUES(A1:B2)");
Object result = worksheet.getRange("C1").getValue();