获取Excel部分数据并很据项目要求计算适宜性等级综合指数判断该地区的土壤适宜性
代码运行前请先导入jxl架包,以下代码仅供学习参考:
下图为项目中的Excel:
ExcelTest02类代码如下:
// 读取Excel的类
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook; public class ExcelTest02 {
/*
*该代码需要先获得excel里面的pH、有机质、氯含量和质地等值
*然后根据公式IAI(pH)=PH×权重(pH)计算出各个的IAI然后相加
*根据IAI(总)的值判断该地图土壤是否适宜种植烟草
*/ static double IAI1;
static double IAI2;
static double IAI3;
static double IAI4;
static double IAI5; public static void main(String args[]) {
try {
System.out.println("begini");
Workbook book = Workbook.getWorkbook(new File("a.xls"));
// 获得第一个工作表对象
Sheet sheet = book.getSheet(0);
// 得到第一列第一行的单元格 try {
File file = new File("d:/IAI.txt");
if (file.exists()) {
file.delete();
}
file.createNewFile();
BufferedWriter output = new BufferedWriter(new FileWriter(file)); for (int i = 2; i < 4896; i++) {
Cell cell1 = sheet.getCell(23, i);// PH
Cell cell2 = sheet.getCell(24, i);// 有机质
Cell cell3 = sheet.getCell(33, i);// 氯含量
Cell cell4 = sheet.getCell(22, i);// 质地 Cell cell5 = sheet.getCell(4, i);// 省
Cell cell6 = sheet.getCell(7, i);// 县
Cell cell7 = sheet.getCell(8, i);// 乡
Cell cell8 = sheet.getCell(9, i);// 村
Cell cell9 = sheet.getCell(10, i);// 组 String ph = cell1.getContents();
double phWeight = 0.1235;
computePhValue(TypeConversion(ph), phWeight); String youjizhi = cell2.getContents();
double youjizhiWeight = 0.2075;
computeYoujizhiValue(TypeConversion(youjizhi),
youjizhiWeight); String lv = cell3.getContents();
double lvWeight = 0.1112;
computeLvValue(TypeConversion(lv), lvWeight); String zhidi = cell4.getContents();
double zhidiWeight = 0.3057;
computeZhidiValue(zhidi, zhidiWeight); double houduWeight = 0.2521;
houdu(houduWeight); String sheng = cell5.getContents();
String xian = cell6.getContents();
String xiang = cell7.getContents();
String cun = cell8.getContents();
String zu = cell9.getContents(); String shiyixing = null;
double IAI = IAI1 + IAI2 + IAI3 + IAI4 + IAI5;
if (IAI < 70.0) {
shiyixing = "不适宜";
}
if (IAI >= 70.0 && IAI < 80.0) {
shiyixing = "次适宜";
}
if (IAI >= 80.0 && IAI < 88.0) {
shiyixing = "适宜";
}
if (IAI >= 88.0) {
shiyixing = "最适宜";
} System.out.println("第" + (i + 1) + "行"
+ (IAI1 + IAI2 + IAI3 + IAI4 + IAI5));
output.write("第" + (i + 1) + "行" + sheng + xian + xiang
+ cun + zu + "\t" + "IAI:"
+ (IAI1 + IAI2 + IAI3 + IAI4 + IAI5) + "\t"
+ shiyixing + "\n");
output.newLine();
}
output.close();
} catch (Exception ex) {
System.out.println(ex);
}
book.close();
System.out.println("end");
} catch (Exception e) {
System.out.println(e);
}
} /**
*
* @param
* @return
*/
public static double computePhValue(double ph, double phWeight) {
double result = 0d;
if (ph == 0) {
return result;
} if (ph < 4.5) {
IAI1 = 60.00 * phWeight;
}
if (ph == 4.5) {
IAI1 = 68.75 * phWeight;
}
if (ph > 4.5 && ph < 5.0) {
IAI1 = (30 * ph - 66.25) * phWeight;
}
if (ph == 5.0) {
IAI1 = 83.75 * phWeight;
}
if (ph > 5.0 && ph < 5.5) {
IAI1 = (32.5 * ph - 78.75) * phWeight;
}
if (ph == 5.5 || (ph > 5.5 && ph < 6.5) || ph == 6.5) {
IAI1 = 100 * phWeight;
}
if (ph > 6.5 && ph < 7.0) {
IAI1 = (-16.24 * ph + 205.56) * phWeight;
}
if (ph == 7.0) {
IAI1 = 91.88 * phWeight;
}
if (ph > 7.0 && ph < 7.5) {
IAI1 = (-23.76 * ph + 258.2) * phWeight;
}
if (ph == 7.5) {
IAI1 = 80.00 * phWeight;
}
if (ph > 7.5 && ph < 8.0) {
IAI1 = (-77.14 * ph + 658.55) * phWeight;
}
if (ph == 8.0) {
IAI1 = 41.43 * phWeight;
}
if (ph > 8.0) {
IAI1 = 8.75 * phWeight;
}
return result;
} public static double computeYoujizhiValue(double youjizhi,
double youjizhiWeight) {
double result = 0d;
if (youjizhi == 0) {
return result;
} if (youjizhi < 10) {
IAI2 = 58.75 * youjizhiWeight;
}
if (youjizhi > 10 && youjizhi < 15) {
IAI2 = (4.37 * youjizhi + 15.05) * youjizhiWeight;
}
if (youjizhi == 15) {
IAI2 = 80.60 * youjizhiWeight;
}
if (youjizhi > 15 && youjizhi < 20) {
IAI2 = (2 * youjizhi + 50.6) * youjizhiWeight;
}
if (youjizhi == 20) {
IAI2 = 90.60 * youjizhiWeight;
}
if (youjizhi > 20 && youjizhi < 25) {
IAI2 = (1.88 * youjizhi + 53) * youjizhiWeight;
}
if (youjizhi == 25) {
IAI2 = 100 * youjizhiWeight;
}
if (youjizhi > 25 && youjizhi < 30) {
IAI2 = (2.12 * youjizhi + 47) * youjizhiWeight;
}
if (youjizhi == 30) {
IAI2 = 89.40 * youjizhiWeight;
}
if (youjizhi > 30 && youjizhi < 35) {
IAI2 = (-2.5 * youjizhi + 164.4) * youjizhiWeight;
}
if (youjizhi == 35) {
IAI2 = 76.90 * youjizhiWeight;
}
if (youjizhi > 35 && youjizhi < 40) {
IAI2 = (-3.38 * youjizhi + 195.2) * youjizhiWeight;
}
if (youjizhi == 40) {
IAI2 = 60.00 * youjizhiWeight;
}
if (youjizhi > 40) {
IAI2 = 48.8 * youjizhiWeight;
}
return result;
} public static double computeLvValue(double lv, double lvWeight) {
double result = 0d;
if (lv == 0) {
return result;
}
if (lv == 5) {
IAI3 = 87.50 * lvWeight;
}
if (lv > 5 && lv < 10) {
IAI3 = (2.5 * lv + 75) * lvWeight;
}
if (lv == 10) {
IAI3 = 100 * lvWeight;
}
if (lv > 10 && lv < 20) {
IAI3 = (-0.625 * lv + 106.25) * lvWeight;
}
if (lv == 20) {
IAI3 = 93.75 * lvWeight;
}
if (lv > 20 && lv < 30) {
IAI3 = (-1.625 * lv + 126.25) * lvWeight;
}
if (lv == 30) {
IAI3 = 77.50 * lvWeight;
}
if (lv > 30 && lv < 40) {
IAI3 = (-1.25 * lv + 115) * lvWeight;
}
if (lv == 40) {
IAI3 = 65.00 * lvWeight;
}
if (lv > 40 && lv < 50) {
IAI3 = (-6.5 * lv + 325) * lvWeight;
}
if (lv > 50) {
IAI3 = 0;
}
return result;
} public static void computeZhidiValue(String zhidi, double zhidiWeight) {
if ("沙土".equals(zhidi)) {
IAI4 = 91.40 * zhidiWeight;
}
if ("壤沙土".equals(zhidi)) {
IAI4 = 100 * zhidiWeight;
}
if ("沙壤土".equals(zhidi)) {
IAI4 = 100 * zhidiWeight;
}
if ("壤土".equals(zhidi)) {
IAI4 = 91.40 * zhidiWeight;
}
if ("粉沙壤土".equals(zhidi)) {
IAI4 = 82.10 * zhidiWeight;
}
if ("粘壤土".equals(zhidi)) {
IAI4 = 72.10 * zhidiWeight;
}
if ("粘土".equals(zhidi)) {
IAI4 = 48.50 * zhidiWeight;
}
} //由于土层厚度在给出的数据里面并没有,这里选随机数
public static void houdu(double houduWeight) {
int len = 5;
int lens = 5;
double sum = 0;
int[] houdu = new int[len];
double[] IAI5s = new double[lens]; for (int i = 0; i < len; i++) {
houdu[i] = (int) (Math.random() * 70 + 20); for (int j = 0; j < lens; j++) {
if (houdu[j] < 20) {
IAI5s[j] = 32.85 * houduWeight;
}
if (houdu[j] > 20 && houdu[j] < 30) {
IAI5s[j] = (1.855 * houdu[j] - 4.25) * houduWeight;
}
if (houdu[j] == 30) {
IAI5s[j] = 51.40 * houduWeight;
}
if (houdu[j] > 30 && houdu[j] < 50) {
IAI5s[j] = (1.18 * houdu[j] + 16) * houduWeight;
}
if (houdu[j] == 50) {
IAI5s[j] = 75.00 * houduWeight;
}
if (houdu[j] > 50 && houdu[j] < 70) {
IAI5s[j] = (0.715 * houdu[j] + 39.25) * houduWeight;
}
if (houdu[j] == 70) {
IAI5s[j] = 89.30 * houduWeight;
}
if (houdu[j] > 70) {
IAI5s[j] = 100 * houduWeight;
}
}
sum = sum + IAI5s[i];
IAI5 = sum / 5;
}
} public static double TypeConversion(String value) {
double values = 0;
if (value != "") {
values = Double.parseDouble(value.trim());
} else {
values = 0;
}
return values;
}
}
运行结果如下图所示:
生成的文本内容如下:
注意下:由于没有土层厚度的数据,所以在程序中采用了随机数选取几组数据求平均值,故每次生成的文本内容都不一样
获取Excel部分数据并很据项目要求计算适宜性等级综合指数判断该地区的土壤适宜性的更多相关文章
- Yii中使用PHPexcel获取excel中数据
1.view中代码如下: <form name="frmBatchSettle" id="" action="" method=&qu ...
- php获取excel文件数据
很简单就可以实现,下面为大家简单介绍下 1.下载PHPExcel类,是一个文件夹,还得有一个文件PHPExcel.php,两个在同级目录 require __DIR__ . './PHPExcel/I ...
- 前端通过js-xlsx获取Excel完整数据
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Python3实战系列之七(获取印度售后数据项目)
问题:续接上一篇.说干咱就干呀,勤勤恳恳写程序呀! 目标:此篇开始进入正题了.为实现我们整个项目功能而开始实现各个子模块功能.首先实现第一篇列出的分步功能模块的第四步: 4.python读取excel ...
- ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据
ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不 ...
- 用struts2标签如何从数据库获取数据并在查询页面显示。最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量。
最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变 ...
- 基于BootStrap的initupload()实现Excel上传和获取excel中的数据
简单说明:后边要做exl解析(还没做呢),所以先有一个excel的的上传以及获取excel中的数据,展示出来. 代码: //html代码 <div class="btn-group&q ...
- 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据
1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...
- 怎么利用Aspose.Cells 获取excel 数据表中sheet的名称
说明:开发环境 vs2012 asp.net mvc4 c# 利用Aspose.Cells 获取Excel数据表的sheet的名称,并把获取的名称赋值给easyUI 的combobox 1.运行效果 ...
随机推荐
- Java 集合 fail-fast机制 [ 转载 ]
Java 集合 fail-fast机制 [转载] @author chenssy 摘要:fail-fast产生原因.解决办法 在JDK的Collection中我们时常会看到类似于这样的话: 例如,Ar ...
- React - Stores
Event emmiters that make data available, handle business logic, send events to React, and listen for ...
- JVM基础01-内存分配
一.什么是JVM Java作为主流编程语言: 它摆脱了硬件的束缚,一处编写,处处运行: 它提供了一种相对安全的内存管理和访问机制,避免了大部分的内存泄露和指针越界问题: 它实现了热点代码的检测和运行时 ...
- 关于string的对象引用
什么都不说了, 一切都在代码里: Console.WriteLine(object.ReferenceEquals(c5, c4)); //False ...
- html的表单表格...
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- padding当高度用时出现的问题
<div class="wrap"> <div class="sudoku"> <div class="sdk-wrap ...
- 自定义silverlight中datagrid的排序事件
<sdk:DataGrid AutoGenerateColumns="False" CanUserSortColumns="False" CanUserR ...
- adb shell am 的用法
adb shell am instrument [options] <COMPONENT> 作用:启动对instrument实例的监视. 参数[options]: -e <key&g ...
- 欧几里得算法求最大公约数(gcd)
关于欧几里得算法求最大公约数算法, 代码如下: int gcd( int a , int b ) { if( b == 0 ) return a ; else gcd( b , a % b ) ; } ...
- jquery_核心_(1)
1.data([key],[value]) 概述 在元素上存放或读取数据,返回jQuery对象. 当参数只有一个key的时候,为读取该jQuery对象对应DOM中存储的key对应的值,值得注意的是,如 ...