统计函数主要实现的是较为复杂的统计函数如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. Table is marked as crashed and should be repaire (

    https://www.cnblogs.com/cxchanpin/p/6894747.html

  2. Codeforces Round #446 (Div. 2) A. Greed【模拟】

    A. Greed time limit per test 2 seconds memory limit per test 256 megabytes input standard input outp ...

  3. #421 Div1 C

    #421 Div1 C 题意 在 (0, n) 和 (m, 0) 处各有一个装置,从起始点(0, 0)出发,首先走短路到 (m, 0) 拿起装置回到起始点,再去 (0, n) 处拿起装置回到起始点.当 ...

  4. 01Trie树【p2420】 让我们异或吧

    Description 异或是一种神奇的运算,大部分人把它总结成不进位加法. 在生活中-xor运算也很常见.比如,对于一个问题的回答,是为1,否为0.那么: (A是否是男生 )xor( B是否是男生) ...

  5. Oracle remove duplicate

    DELETE FROM your_table WHERE rowid not in (SELECT MIN(rowid) FROM your_table GROUP BY column1, colum ...

  6. 数据挖掘算法之k-means算法

    系列文章:数据挖掘算法之决策树算法       k-means算法可以说是数据挖掘中十大经典算法之一了,属于无监督的学习.该算法由此衍生出了很多类k-means算法,比如k中心点等等,在数据挖掘领域, ...

  7. Array方法介绍

    Array 是抽象基类,抽象基类不能创建它的对象 定义的数组: int[,] myArr4=new int[2,3]{{1,2,3},{4,5,6}}; int[, ,] myArr3 = new i ...

  8. oracle wm_concat 拼接乱码 显示问号等

    今天用plsql查询工具 拼接sql查询显示乱码,不知道为何. 后来经多方查找资料 现在分享如下. 针对oracle拼接函数的乱码,首先查询一下oracle字符的编码是否支持中文,查询语句: SELE ...

  9. u-boot-2015.01在tq2440上的初步移植

    作者: 彭东林 邮箱: pengdonglin137@163.com QQ:   405728433 开发板:     tq2440 工具:       Win7 + VMware + Debian6 ...

  10. [Android Traffic] 调整定时更新的频率(C2DM与退避算法)

    转载自: http://blog.csdn.net/kesenhoo/article/details/7395253 Minimizing the Effect of Regular Updates[ ...