代码运行前请先导入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部分数据并很据项目要求计算适宜性等级综合指数判断该地区的土壤适宜性的更多相关文章

  1. Yii中使用PHPexcel获取excel中数据

    1.view中代码如下: <form name="frmBatchSettle" id="" action="" method=&qu ...

  2. php获取excel文件数据

    很简单就可以实现,下面为大家简单介绍下 1.下载PHPExcel类,是一个文件夹,还得有一个文件PHPExcel.php,两个在同级目录 require __DIR__ . './PHPExcel/I ...

  3. 前端通过js-xlsx获取Excel完整数据

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. Python3实战系列之七(获取印度售后数据项目)

    问题:续接上一篇.说干咱就干呀,勤勤恳恳写程序呀! 目标:此篇开始进入正题了.为实现我们整个项目功能而开始实现各个子模块功能.首先实现第一篇列出的分步功能模块的第四步: 4.python读取excel ...

  5. 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的路由方案,与原来的方案在使用上差别不 ...

  6. 用struts2标签如何从数据库获取数据并在查询页面显示。最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量。

    最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变 ...

  7. 基于BootStrap的initupload()实现Excel上传和获取excel中的数据

    简单说明:后边要做exl解析(还没做呢),所以先有一个excel的的上传以及获取excel中的数据,展示出来. 代码: //html代码 <div class="btn-group&q ...

  8. 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据

    1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...

  9. 怎么利用Aspose.Cells 获取excel 数据表中sheet的名称

    说明:开发环境 vs2012 asp.net mvc4 c# 利用Aspose.Cells 获取Excel数据表的sheet的名称,并把获取的名称赋值给easyUI 的combobox 1.运行效果 ...

随机推荐

  1. windows下9款一键快速搭建PHP本地运行环境的好工具(含php7.0环境)

    推荐几款一键快速搭建PHP本地运行环境的好工具(含php7.0及apache,nigix,mysql) 首推phpstudy2016和wampServer3.0.6     理由支持php7.0 目前 ...

  2. 9.hibernate的一对一映射

    一.hibernate的一对一按照外键映射 1.创建如下sql脚本: --员工账号表 create table USERS1 ( USERID ) not null, USERNAME ), USER ...

  3. 多尺度二维离散小波分解wavedec2

    对X进行N尺度小波分解 [C,S]=wavedec2(X,N,'wname'); clc,clear all,close all; load woman; [c,s]=wavedec2(X,2,'db ...

  4. 【优先队列-求第Ki大的数】Black Box

    Black Box Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8637   Accepted: 3542 Descrip ...

  5. G - 小晴天老师系列——可恶的墨水瓶

    G - 小晴天老师系列——可恶的墨水瓶 Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Othe ...

  6. quicksort快排

    废话不多说,上代码: void quicksort(int x[], int lo, int hi){ int i = lo, j = hi; ]; while(i <= j){ while(x ...

  7. Spring 接收表单List集合数据

    4种方法,详情见:http://blog.csdn.net/lutinghuan/article/details/46820023 第一种: 1.新增类,其中有属性为该对象的集合 public cla ...

  8. Linux手动搭建LAMP环境

    当你看到标题里的“手动搭建”,你是不是会想,难不成还有“自动搭建”?当然......不是,这里的“手动搭建”是指按部就班的搭建Apache.MySQL.PHP环境,是相对于集成软件包而言的.所以你是不 ...

  9. FTP、TFTP

      FTP 文件传送协议  (File Transfer Protocol) FTP是因特网上使用得最广泛的文件传送协议. 文件传送协议 FTP (File Transfer Protocol) 是因 ...

  10. Flask -- 请求、上传文件、Cookies

    请求对象 from flask import request request.method #值为form表单提交的method 'POST'. 'GET'等 #如果值为'POST'或'PUT',则可 ...