上次已经为大家介绍过java中Excel公式的计算和函数,实例展示,今天要简述的依旧是java中Excel函数的代码展示,包括CountIf和SumIf函数、Lookup、随机数函数和公式返回值。一起来看看吧。
一、CountIf和SumIf函数,代码展示如下:
HSSFSheet sheet = workbook.createSheet("Test"); // 创建工作表(Sheet) HSSFRow row = sheet.createRow(0); row.createCell(0) .setCellValue(57); row.createCell(1) .setCellValue(89); row.createCell(2) .setCellValue(56); row.createCell(3) .setCellValue(67); row.createCell(4) .setCellValue(60); row.createCell(5) .setCellValue(73); row.createCell(7) .setCellFormula("COUNTIF(A 1:F 1,\">=60\")"); row.createCell(8) .setCellFormula("SUMIF(A 1: F 1,\">=60\",A 1:F 1)");
对上面的公式作一个简要的说明:
1.COUNTIF(range,criteria):满足某条件的计数的函数。①参数range:需要进行读数的计数;②参数criteria:条件表达式,计数需要满足此条件。
2.SumIF(criteria_range, criteria,sum_range):用于统计某区域内满足某条件的值的求和。①参数criteria_range:条件测试区域,第二个参数Criteria中的条件将与和条件测试区域中的值进行比较;②参数criteria:条件测试值,满足条件的对应的sum_range项将进行求和计算;③参数sum_range:汇总数据所在区域,求和时会排除掉不满足Criteria条件的对应的项。
二、Lookup函数,代码展示如下:
HSSFSheet sheet = workbook.createSheet("Test"); // 创建工作表(Sheet) HSSFRow row = sheet.createRow(0); row.createCell(0) .setCellValue(0); row.createCell(1) .setCellValue(59); row.createCell(2) .setCellValue("不及格"); row = sheet.createRow(1); row.createCell(0) .setCellValue(60); row.createCell(1) .setCellValue(69); row.createCell(2) .setCellValue("及格"); row = sheet.createRow(2); row.createCell(0) .setCellValue(70); row.createCell(1) .setCellValue(79); row.createCell(2) .setCellValue("良好"); row = sheet.createRow(3); row.createCell(0) .setCellValue(80); row.createCell(1) .setCellValue(100); row.createCell(2) .setCellValue("优秀"); row = sheet.createRow(4); row.createCell(0) .setCellValue(75); row.createCell(1) .setCellFormula("LOOKUP(A 5,$A$1:$A$4,$C$1:$C$4)"); row.createCell(2) .setCellFormula("VLOOKUP(A 5,$A$1:$C$4,3,true)");
对上面的公式作一个简要的说明:
1.LOOKUP(lookup_value,lookup_vector,result_vector):①第一个参数:需要查找的内容,本例中指向A5单元格,也就是75 ;②第二个参数:比较对象区域,本例中的成绩需要与$A$1:$A$4中的各单元格中的值进行比较;③第三个参数:查找结果区域,如果匹配到会将此区域中对应的数据返回。如本例中返回$C$1:$C$4中对应的值。
2.VLOOKUP(lookup_value,lookup_area,result_col,is_fuzzy),①第一个参数:需要查找的内容,这里是A5单元格;②第二个参数:需要比较的表,这里是$A$1:$C$4;③第三个参数:匹配结果对应的列序号。这里要对应的是成绩列,所以为3;④第四个参数:指明是否模糊匹配。例子中的TRUE表示模糊匹配,与上例中一样。匹配到的是第三行。如果将此参数改为FALSE,因为在表中的第1列中找不到75,所以会报“#N/A”的计算错误。
三、随机数函数,代码展示如下:
HSSFSheet sheet = workbook.createSheet("Test"); // 创建工作表(Sheet) HSSFRow row = sheet.createRow(0); row.createCell(0) .setCellFormula("RAND()"); //取0-1之间的随机数 row.createCell(1) .setCellFormula("int(RAND()*100)"); //取0-100之间的随机整数 row.createCell(2) .setCellFormula("rand()*10+10"); //取10-20之间的随机实数 row.createCell(3) .setCellFormula("CHAR(INT(RAND()*26)+97)"); //随机小写字母 row.createCell(4) .setCellFormula("CHAR(INT(RAND()*26)+65)"); //随机大写字母 //随机大小写字母 row.createCell(5) .setCellFormula("CHAR(INT(RAND()*26)+if(INT(RAND()*2)=0,97,65))");
对上面的公式做一个简要的说明:
上面的代码中除RAND函数以外,还有CHAR函数用来将ASCII码换为字母,INT函数用来取整。同时需要注意INT函数不会四舍五入,无论小数点后是多少都会被舍去。
四、获得公式的返回值,代码展示如下:
HSSFSheet sheet = workbook.createSheet("Test"); // 创建工作表(Sheet) HSSFRow row = sheet.createRow(0); row.createCell(0) .setCellValue(7); //A 1 row.createCell(1) .setCellValue(8); //B 1 HSSFCell cell = row.createCell(2); cell.setCellFormula("A 1*B 1+14"); HSSFFormulaEvaluator e = newHSSFFormulaEvaluator(workbook); cell = e.evaluateInCell(cell); //若Excel文件不是POI创建的,则不必调用此方法 System.out.println("公式计算结果:" + cell.getNumericCellValue());
以上就是关于java中CountIf和SumIf函数、Lookup、随机数函数和公式返回值的主要内容,并且通过实际的例子为大家展示。想要了解更多java基础和java经典例子,敬请关注奇Q工具网。
推荐阅读: