GcExcel通过自定义函数给一片区域赋值
GcExcel可以像SpreadJS一样提供自定义函数满足用户的一些特殊的计算逻辑。有时候,我们有通过一个函数来给一片区域赋值的需求。例如:我有一份数据需要按月份查询并显示,这个时候我的设计就可以通过一个函数,函数的参数来传递查询结果,将查询结果显示在一个区域中。这个时候需要借助GcExcel的自定义函数与数组公式结合来完成。
相关代码如下:
public class TestCustomFunction {
class MyCustomFunction extends CustomFunction{
public MyCustomFunction() {
super("MyCustomFunciton", FunctionValueType.Number,
new Parameter[] { new Parameter(FunctionValueType.Object)});
}
@Override
public Object[][] evaluate(Object[] arg0, ICalcContext arg1) {
// TODO Auto-generated method stub
Object[][] result = new Object;
for (int i = 0; i < 100; i++){
for(int j=0;j<100;j++) {
result = i+j;
}
}
return result;
}
}
public static void main(String[] args) {
Workbook workbook = new Workbook();
Workbook.AddCustomFunction(new TestCustomFunction().new MyCustomFunction());
IWorksheet worksheet = workbook.getActiveSheet();
worksheet.getRange(0,0,100,100).setFormulaArray("=MyCustomFunciton()");
Object[][]data = (Object[][]) worksheet.getRange(0,0,100,100).getValue();
for(int i=0;i<data.length;i++) {
for(int j=0;j<data.length;j++) {
System.out.println(data);
}
}
}
}代码中通过定义一个自定义函数,将函数的返回类型设置为二位数组,之后设置时结合数组公式用setFormulaArray进行设置,以达到用函数给一片区域赋值的操作。
页:
[1]