1.描述编辑
使用开源JS库formula.js实现office公式(函数)。该库包含office公式约400多个常用公式。
2. 实现思路编辑
加载formula.js库,通过=formulajs.函数名称(参数)方式引用公式。
3. 操作步骤/示例编辑
先下载 附件formula.zip,解压缩,将formula文件夹放置在WebRoot下,新建报表模板,进入模板web属性,
选择引用 js
依次增加formula文件夹下的
numeric.min.js
numeral.min.js
jstat.js
formula.js
这样formula.js及其依靠的js被加载进入模板。
下来就是使用,formula的函数。
使用方法就是 formulajs.函数名称,区分大小写。函数名称可以查看formula.js对函数名称的定义,目前formula支持office2007版全部公式。
//使用前可以用Notepad++打开formula.js查找对TREND()函数参数的定义,exports.TREND = function(data_y, data_x, new_data_x);正确的用法是TREND(数组Y,数组X,待查数组);
var data_y=new Array();//新建数组;
var data_x=new Array();//新建数组;
var new_data_x=new Array();//新建数组;
data_y.push(contentPane.curLGP.getCellValue("A1"));//获取单元格的值并添加到数组data_y
data_y.push(contentPane.curLGP.getCellValue("A2"));
data_x.push(contentPane.curLGP.getCellValue("B1"));//获取单元格的值并添加到数组data_x
data_x.push(contentPane.curLGP.getCellValue("B2"));
new_data_x.push(contentPane.curLGP.getCellValue("C1")); //获取单元格的值并添加到数组new_data_x
var ak=formulajs.TREND(data_y,data_x,new_data_x);//使用函数TREND
contentPane.setCellValue("D1",null,ak);//将计算结果赋值给单元格D1
添加按钮控件,给按钮添加点击事件,复制上面代码到点击事件下。
计算前
计算后
如果加上JS参数,上面的代码更简洁。缺点就是数据不能实时根据填写内容动态变化,只能跟随页面加载。
测试结果显示函数被正常调用。源码地址
https://github.com/sutoiku/formula.js/
用Notepad++打开,统计共计428个公式。用法和ecxel一致。详细的操作步骤,包含明确的步骤号及对应操作截图,阅读者根据文档,能够完整的还原出示例。
4. 效果查看编辑
分别给出PC端、APP、H5的效果,若移动端不支持需要注明;