统计函数主要实现的是较为复杂的统计函数如countif、sumif、frequency,也是,直接上代码

/**
* 项目名称:
* 文件说明:
* 主要特点:文件说明:EXCEL函数类型:统计函数
* 简单的函数如sum,average等等就不实现了
* 版本:1.0
* 制作人:刘晨曦
* 创建时间:2013-12-3
**/
package EXCEL; import games.MathTools; import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException; /**
* @author lcx
*
*/
public class CountFunctions { /**
* 统计满足条件的个数
* @param range
* @param criteria
* @return
*/
public static int sumif(int[][] range,String criteria)
{
ScriptEngineManager man=new ScriptEngineManager();
ScriptEngine engine=man.getEngineByName("javascript");
int sum=0;
for(int i=0;i<range.length;i++)
for(int j=0;j<range[0].length;j++)
{
try {
Boolean b=(Boolean) engine.eval(range[i][j]+criteria);
if(b)
sum+=range[i][j];
} catch (ScriptException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return sum;
} /**
* 统计满足条件的个数
* @param range
* @param criteria
* @return
*/
public static int countif(int[][] range,String criteria)
{
ScriptEngineManager man=new ScriptEngineManager();
ScriptEngine engine=man.getEngineByName("javascript");
int count=0;
for(int i=0;i<range.length;i++)
for(int j=0;j<range[0].length;j++)
{
try {
Boolean b=(Boolean) engine.eval(range[i][j]+criteria);
if(b)
count++;
} catch (ScriptException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return count;
} public static void sort()
{
System.out.println("给array和tags排序");
} /**
* 为简化处理,在这里边需保证输入的是升序排列的数组
* @param array
* @param tags
* @return
*/
public static int[] frequency(int [] array,int[] tags)
{
sort();//排序,在这里就不实现了
if(array==null||tags==null||array.length==0||array.length==0)
throw new IllegalArgumentException("数组为空");
int[] res=new int[tags.length+1];
int count=0; for(int i=0;i<array.length;i++)
{
if(count>=tags.length)
break;
if(array[i]<=tags[count])
res[count]+=1;
else
{
i--;
count++;
}
}
//剩余的
int sum=0;
for(int i=0;i<res.length-1;i++)
sum+=res[i];
res[res.length-1]=array.length-sum;
return res;
} public static void main(String[] args) { /*******************測试数组相关*****************************/
int [][]a={{1,2},{3,4},{5,6}};
// countif(a,"<=2");
// System.out.println(rank(3,a,true));
System.out.println(sumif(a,"<=2")); int[] b={15,25,35,45,55,65,75,85,95};
MathTools.printArray(frequency(b,new int[]{10,90}));
}
}

JAVA实现EXCEL公式专题(七)——统计函数的更多相关文章

  1. JAVA实现EXCEL公式专题(四)——字符串函数

    直接上代码: /** * 项目名称: * 文件说明: ExCEL公式类型:字符串公式 * 主要特点: * 版本:1.0 * 制作人:刘晨曦 * 创建时间:2013-12-3 **/ package E ...

  2. java读写excel文件

    近期处理的数据规模比较大,正好又是统计合并的事情,想着借助excel就可以完成了,然后就了解了下java读取excel的事情. 读取的文件主要分两类:xls文件.xlsx文件.xls文件的相关操作用的 ...

  3. java, poi, excel

    工作需要用java操作Excel,现在网上搜索了一下,决定选取POI包来操作.pom内容如下: <dependency> <groupId>org.apache.poi< ...

  4. excel公式应用大全

    excel公式应用大全 1.ABS函数 函数名称:ABS 主要功能:求出相应数字的绝对值. 使用格式:ABS(number) 参数说明:number代表需要求绝对值的数值或引用的单元格. 应用举例:如 ...

  5. java实现excel的导入导出(poi详解)[转]

    java实现excel的导入导出(poi详解) 博客分类: java技术 excel导出poijava  经过两天的研究,现在对excel导出有点心得了.我们使用的excel导出的jar包是poi这个 ...

  6. Java读写Excel之POI超入门

    转自:http://rensanning.iteye.com/blog/1538591 Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给J ...

  7. Java读写Excel之POI超入门(转)

    Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能.Apache POI ...

  8. Excel 公式集

    1.  Excel 公式集 按身份证计算年龄 按日计算的 (2018/12/20)(身份证 C2): =TRUNC((DAYS360(CONCATENATE(MID(C2,7,4),"/&q ...

  9. Java读取Excel数据

    Java读取Excel数据,解析文本并格式化输出 Java读取Excel数据,解析文本并格式化输出 Java读取Excel数据,解析文本并格式化输出 下图是excel文件的路径和文件名 下图是exce ...

随机推荐

  1. Python与数据库[1] -> 数据库接口/DB-API[0] -> 通用标准

    数据库接口 / DB-API 在Python中,数据库是通过适配器(Adaptor)来连接访问数据库的,适配器通常与数据库客户端接口(通常为C语言编写)想连接,而不同的适配器都会尽量满足相同的DB-A ...

  2. Python实现微信小程序支付功能

    由于最近自己在做小程序的支付,就在这里简单介绍一下讲一下用python做小程序支付这个流程.当然在进行开发之前还是建议读一下具体的流程,清楚支付的过程. 1.支付交互流程 当然具体的参数配置可以参考官 ...

  3. 洛谷——1164 小A点菜(背包方案数)

    大水题!! 题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家……餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:“随便点”. 题目描述 不过uim由于买 ...

  4. 深入分析CVE-2016-5195 Dirty Cow

    前面一段时间,这个编号为CVE-2016-5195的漏洞刷爆了各个安全相关的博客和网站,这个漏洞可以对任意可读文件进行写操作从而导致提权,通杀了包括Android在内的绝大多数linux版本,,影响不 ...

  5. Group Shifted Strings -- LeetCode

    Given a string, we can "shift" each of its letter to its successive letter, for example: & ...

  6. xml文件生成与下载

    写在前面: 最近要做一个新的功能,点击按钮,可以根据数据生成对应的xml文件并保存.下面记录一下在做的过程的一些疑惑与问题(我就是太笨了,一些很简单的知识都不知道,不过通过这次跟蛋蛋的交流,解决了我的 ...

  7. http 头信息详解(转)

    HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616.HTTP协议采用了请求/响应模型.客户 ...

  8. 深入理解MySQL中的Redo、Undo、MVCC

    http://edu.csdn.net/course/detail/3495 http://edu.csdn.net/courses/o317_a3/云计算大数据

  9. c++中resize这个函数怎么用

    c++中序列式容器的一个共性函数, vv.resize(int n,element)表示调整容器vv的大小为n,扩容后的每个元素的值为element,默认为0 resize()会改变容器的容量和当前元 ...

  10. 完全理解Gson(3):Gson反序列化

    完全理解Gson(2):Gson序列化 完全理解Gson(1):简单入门 本文延续前一篇文章,继续介绍简单基本的Gson用法.这篇文章我们将介绍如何将复杂的JSON对象解析为Java对象,其中Java ...