统计函数主要实现的是较为复杂的统计函数如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. 如何跳转到其他APP(android)

    有很多小伙伴会遇上这样的需求,从自己的app页面跳转到其他APP界面,一般情况下都是在自己的主包中跳转到公司其他APP,或者是合作方的APP,如果手机中没有这款APP会下载这款APP . 今天,博主就 ...

  2. HDU 1541.Stars-一维树状数组(详解)

    树状数组,学长很早之前讲过,最近才重视起来,enmmmm... 树状数组(Binary Indexed Tree(B.I.T), Fenwick Tree)是一个查询和修改复杂度都为log(n)的数据 ...

  3. LINUX学习资源

    鸟哥:http://vbird.dic.ksu.edu.tw/linux_basic/0430cron.php#cron 五分钟教程:http://roclinux.cn/?page_id=3759

  4. 扩展欧拉定理【p4139】上帝与集合的正确用法

    Description 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做"元". 第二天, 上帝创造了一个新的元素,称作&quo ...

  5. Count of Smaller Numbers After Self -- LeetCode

    You are given an integer array nums and you have to return a new counts array. The counts array has ...

  6. C/C++框架和库 (真的很强大) 转

    http://blog.csdn.net/xiaoxiaoyeyaya/article/details/42541419     值得学习的C语言开源项目 - 1. Webbench Webbench ...

  7. [置顶] kubernetes创建资源yaml文件例子--pod

    kubernetes创建pod的yaml文件,参数说明 apiVersion: v1 #指定api版本,此值必须在kubectl apiversion中 kind: Pod #指定创建资源的角色/类型 ...

  8. poj 2324 Anniversary party(树形DP)

    /*poj 2324 Anniversary party(树形DP) ---用dp[i][1]表示以i为根的子树节点i要去的最大欢乐值,用dp[i][0]表示以i为根节点的子树i不去时的最大欢乐值, ...

  9. Makefile之文件搜索

    Makefile之文件搜索 1.Makefile 文件中的"VPATH"变量 如果没有指明这个变量,make只会在当前目录下查找依赖文件和目标文件: 如果定义了这个变量,make会 ...

  10. C#中out与ref区别

    一.ref(参考)与out区别 1.out(只出不进) 将方法中的参数传递出去,在方法中将该参数传递出去之前需要在该方法起始赋初值:在方法外传递的该参数可以不用赋值: 简单理解就是:将一个东西抛出去之 ...