代码运行前请先导入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. Hadoop故障排除:jps 报process information unavailable

    4883 -- process information unavailable 解决办法: 进入tmp目录, cd /tmp 删除该目录下 名称为hsperfdata_{username}的文件夹 然 ...

  2. c# socket传输struct类型

    data结构体类型 public struct datas    { public string test1; public string test2;    } //socket服务器端 publi ...

  3. java 导出excel(简单案例)

    public class Student { private int id; private String name; private int age; private Date birth; pub ...

  4. 7、Web应用程序中的安全向量 -- 使用Retail部署配置

    该方法不需要胡乱地编辑各个配置设置,而是利用了ASP.NET特性:Retail部署配置. 部署配置是服务器的machine.config文件(在%windir%\Microsoft.NET\Frame ...

  5. HUST 1404 Hamming Distance(字符串)

    Hamming Distance Description Have you ever heard of the Hamming distance. It is the number of positi ...

  6. HDU 1372 Knight Moves(BFS)

    题目链接 Problem Description A friend of you is doing research on the Traveling Knight Problem (TKP) whe ...

  7. html5 让IE6,7支持HTML5语义化标签的文件

    https://github.com/aFarkas/html5shiv/blob/master/src/html5shiv.js   只要应用这个js就行了

  8. JavaScript 部分对象方法记叙 ing...

  9. Java 容器一些知识

    一.Collection 1.static 方法: Collections.sort(List<T>):实现List排序功能 Collections.fill(List<T> ...

  10. javascript动画效果之透明度

    在css中的filter对应老版本的ie浏览器,opacity对应的是其他浏览器 <!DOCTYPE html> <html> <head> <meta ch ...