Clark.Pan 发表于 2020-12-22 15:46:11

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]
查看完整版本: GcExcel通过自定义函数给一片区域赋值