JAVA实现EXCEL公式专题(七)——统计函数
统计函数主要实现的是较为复杂的统计函数如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公式专题(七)——统计函数的更多相关文章
- JAVA实现EXCEL公式专题(四)——字符串函数
直接上代码: /** * 项目名称: * 文件说明: ExCEL公式类型:字符串公式 * 主要特点: * 版本:1.0 * 制作人:刘晨曦 * 创建时间:2013-12-3 **/ package E ...
- java读写excel文件
近期处理的数据规模比较大,正好又是统计合并的事情,想着借助excel就可以完成了,然后就了解了下java读取excel的事情. 读取的文件主要分两类:xls文件.xlsx文件.xls文件的相关操作用的 ...
- java, poi, excel
工作需要用java操作Excel,现在网上搜索了一下,决定选取POI包来操作.pom内容如下: <dependency> <groupId>org.apache.poi< ...
- excel公式应用大全
excel公式应用大全 1.ABS函数 函数名称:ABS 主要功能:求出相应数字的绝对值. 使用格式:ABS(number) 参数说明:number代表需要求绝对值的数值或引用的单元格. 应用举例:如 ...
- java实现excel的导入导出(poi详解)[转]
java实现excel的导入导出(poi详解) 博客分类: java技术 excel导出poijava 经过两天的研究,现在对excel导出有点心得了.我们使用的excel导出的jar包是poi这个 ...
- Java读写Excel之POI超入门
转自:http://rensanning.iteye.com/blog/1538591 Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给J ...
- Java读写Excel之POI超入门(转)
Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能.Apache POI ...
- Excel 公式集
1. Excel 公式集 按身份证计算年龄 按日计算的 (2018/12/20)(身份证 C2): =TRUNC((DAYS360(CONCATENATE(MID(C2,7,4),"/&q ...
- Java读取Excel数据
Java读取Excel数据,解析文本并格式化输出 Java读取Excel数据,解析文本并格式化输出 Java读取Excel数据,解析文本并格式化输出 下图是excel文件的路径和文件名 下图是exce ...
随机推荐
- 【转】2017PHP程序员的进阶之路
2017PHP程序员的进阶之路 又是一年毕业季,可能会有好多毕业生即将进入开发这个圈子,踏上码农这个不归路.根据这些年在开发圈子总结的LNMP程序猿发展轨迹,结合个人经验体会,总结出很多程序员对未来的 ...
- 性能优化之基础资源cpu&内存(JVM)
本章主要介绍计算机的一些基础资源以及操作系统处理后的一些基础资源. 主要包括 cpu 内存 磁盘 网络 线程 本章会介绍这些资源的一些原理,介绍如何查看资源的数量,使用情况,对性能和整体计算机执行的一 ...
- HDU 2955 【01背包+小数概率】
Robberies Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- 谷歌浏览器cookies管理插件:EditThisCookie
目前大多数网站的登录程序或者是其他保存用户信息到本地浏览器的方式都是使用cookies的方式,而cookies虽然可以为用户的一些操作带来便捷,比如可以记住用户的密码或者用户的选择历史,在下一次操作的 ...
- bzoj 1305: [CQOI2009]dance跳舞
题目链接 bzoj 1305: [CQOI2009]dance跳舞 题解 男,女生拆点A1A2,B1B2,拆成两点间分别连容量为K的边,限制与不喜欢的人跳舞的数量 A1连接源点容量为x,B1连接汇点容 ...
- openresty的lua_package_path
文档 lua_package_path可以配置openresty的文件寻址路径.官网文档如下: # 设置纯 Lua 扩展库的搜寻路径(';;' 是默认路径): lua_package_path '/f ...
- MySQL性能指标及计算方法 等待show processlist
http://www.cnblogs.com/cyt1153/p/6697847.html http://www.cnblogs.com/cyt1153/tag/mysql/
- Android 版 Facebook 登录
Android 版 Facebook SDK 让用户可以通过 Facebook 登录注册您的应用.通过 Facebook 登录您的应用时,用户可以向应用授予权限,以便您可以检索信息或以用户的身份在 F ...
- Javascript -- document的createDocumentFragment()方法
在<javascript高级程序设计>一书的6.3.5:创建和操作节点一节中,介绍了几种动态创建html节点的方法,其中有以下几种常见方法: · crateAttribute(name): ...
- 转:全面分析 Spring 的编程式事务管理及声明式事务管理
转:from: https://www.ibm.com/developerworks/cn/education/opensource/os-cn-spring-trans/