No.6 读取excel写入数组+判断分区
由于项目需要根据经纬度判断分区,每个区有最大最小经纬度,4个值组成。那么传入的经纬度,进行比大小即可判断。几百个区的数据写在excel上,需要先导入到数组里。
- 读取excel
- 导入数组
- 比大小判断分区
一. 读取excel
一开始采取了用poi,从http接收excel的思路,但是比较蠢。搞了半天能用,但不好用。代码在最后放出来。
这里使用了老旧的 jxl.jar ,依赖的话pom.xml上写上去,却说找不到(难道太久远了嘛)。下的jar包,放进工程目录里。
- 创建工具类ChannelDivisionIDUtil、model类 Coordinate(经纬度坐标)
- 读取excel方法readExcelInputArray
- 计算分区方法getChannelDivisionID
- 测试调用
创建工具类
注意:
- 代表导入excel的数组,arrayCD,在别的方法里也要使用,所以不能写在方法里(那就变成局部变量了),要写在类里,方法前面
static String[][] arrayCD; - 第三方jar包使用,需要先建个文件夹 src\lib\jxl.jar ,然后在pom中写上依赖:
- BigDecimal转double
- a.doubleValue()
- Double.valueOf(a);
Double a=b.doubleValue(); latitude_min = Double.valueOf(arrayCD[4][j]);
```java
<!--添加外部依赖-->
<dependency>
<groupId>jxl</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
<scope>system</scope>
<systemPath>${basedir}/src/lib/jxl-2.6.12.jar</systemPath>
</dependency>
然后maven clean一下,来打包测试
package com.company.project.util;
import com.company.project.model.Coordinate;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import org.springframework.stereotype.Component;
import java.io.File;
import java.io.FileInputStream;
import java.math.BigDecimal;
@Component
public class ChannelDivisionIDUtil {
static String[][] arrayCD;
public void readExcelInputArray() {
/*
本地读取excel
*/
jxl.Workbook readwb = null;
// List<String> list = new ArrayList<String>();
try {
// 构建Workbook对象, 只读Workbook对象 直接从本地文件创建Workbook