我开始关注XLLoop因为我需要一种从java系统获取数据到Excel(2010版)的方法。
我已经关注了网站首页上的java SimpleServer示例:
package org.boris.xlloop.util;
import org.boris.xlloop.FunctionServer;
import org.boris.xlloop.handler.*;
import org.boris.xlloop.reflect.*;
public class ServerExample
{
public static void main(String[] args) throws Exception {
// Create function server on the default port
FunctionServer fs = new FunctionServer();
// Create a reflection function handler and add the Math methods
ReflectFunctionHandler rfh = new ReflectFunctionHandler();
rfh.addMethods("Math.", Math.class);
rfh.addMethods("Math.", Maths.class);
rfh.addMethods("CSV.", CSV.class);
rfh.addMethods("Reflect.", Reflect.class);
// Create a function information handler to register our functions
FunctionInformationHandler firh = new FunctionInformationHandler();
firh.add(rfh.getFunctions());
// Set the handlers
CompositeFunctionHandler cfh = new CompositeFunctionHandler();
cfh.add(rfh);
cfh.add(firh);
fs.setFunctionHandler(new DebugFunctionHandler(cfh));
// Run the engine
System.out.println("Listening on port " + fs.getPort() + "...");
fs.run();
}
}
并且已经成功地将简单的静态java方法集成到返回一个值的Excel中。例如,Math.pow(2,4.45),它们都返回一个双。
但是,我无法集成任何返回数组/值列表的函数。例如,在上面我们已经注册了Maths类(XLLoop类)以供在Excel中使用。该类包含静态方法
public static double[] normalDist(int var0)
该方法返回一个长度为 var0 的数组,但是当我在Excel中调用它时,只有一个单元格中填充了一个值,我希望 var0 单元格具有人口稠密。这对我来说似乎是一个相当基本的特征,所以我很确定我必须做一些愚蠢的事情。
如果有人可以提供帮助,我们将不胜感激。
我还应该提一下,我发现了similar SO question ,与R相关的SO问题相关联。不幸的是,原版SO question 已被海报删除了......