【读入测试数据】【读入表格数据的第一个脚本】

2019-04-10  本文已影响0人  御都

2、在Maven工程中下载poi的jar包
在Pom.xml配置依赖,如下

<dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.15</version>
    </dependency> 

2.1 设置保存后,Pom.xml报错,下载poi的jra包失败


image.png

首行报错如下:


image.png
在下载到的本地路径下查看,只下载了一个文件,一般要有7个
image.png

2.1.1 怀疑依赖的脚本写错了---无拼写错误
和正确的逐字比较,没有拼写错误,没有多没有少。使用网页上查询到依赖,还是不行。
2.1.2 怀疑版本不对
将版本改为3.7 3.8 4.10也不行
2.1.3 观察fail信息,估计是网络慢下载失败
解决办法:将Maven工程里下载到本地的文件全部删除,重新下载。Pom.xml的首行不报错了,但是pom.xml和工程名前都有红叉叉,pom.xml的报错信息为Project read error。解决办法右键该工程强制更新,解决(具体步骤为:https://jingyan.baidu.com/article/b2c186c82e5b56c46ef6ff0f.html,只用了其中的第3步骤,不支持mvn命令就没有纠结做1和2)。之后下载jar包都会出现这个问题,都可以强制更新解决。
2.1.4 总结下解决办法
将Maven工程中下载到本地的jar包删除了,重新下载。
重新下载可能会出现pom Dependency Hierarchy project read error错误,按照https://jingyan.baidu.com/article/b2c186c82e5b56c46ef6ff0f.html中的步骤3就能解决。

3 获取某个单元格内容的代码

//从工厂里获取一个workbook对象
        Workbook workbook = WorkbookFactory.create(new File("src/test/resources/testDate.xls"));
        //从workbook中获取第sheetNum个sheet对象,sheetNum从0开始计数
        Sheet sheet = workbook.getSheetAt(sheetNum - 1 );
        //从Sheet对象中获取需要的Row,从0开始计数。实际我们看到的表格行数从1开始,
        //参数要减去1
        Row row = sheet.getRow(rowNum - 1);
        //从Row对象中获取指定的列,确定为某个单元格,同上减去1
        Cell cell = row.getCell(columnNum -1);
        //设置Cell对象的值类型
        cell.setCellType(CellType.STRING);
        //获取cell对象的值
        String value = cell.getStringCellValue();

4 用Object[][]对单元格内容进行存储,代码如下

package inputDemo;

import java.io.File;
import java.io.IOException;

import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Row.MissingCellPolicy;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

/*import org.apache.poi.ss.usermodel.WorkbookFactory;*/
public class ExcelUtil {
    public static Object[][] read(int sheetNum,int starRow,int endRow,int starCell,int endCell){
        //创建一个Object 二维数组存放cell的值
        Object[][] datas = new Object[endRow-starRow+1][endCell-starCell+1];
        
try {
    try {
        //从工厂里获取一个workbook对象
        Workbook workbook = WorkbookFactory.create(new File("src/test/resources/testDate.xls"));
        //从workbook中获取第sheetNum个sheet对象,sheetNum从0开始计数
        Sheet sheet = workbook.getSheetAt(sheetNum - 1 );
        for(int i=starRow;i<=endRow;i++){
            //从Sheet对象中获取需要的Row,从0开始计数。实际我们看到的表格行数从1开始,
            //参数要减去1
            Row row = sheet.getRow(i - 1);
            for(int j=starCell;j<=endCell;j++){
                
                //从Row对象中获取指定的列,确定为某个单元格,同上减去1
                Cell cell = row.getCell(j -1,MissingCellPolicy.CREATE_NULL_AS_BLANK);
                //设置Cell对象的值类型
                cell.setCellType(CellType.STRING);
                //获取cell对象的值
                String value = cell.getStringCellValue();
                //将单元格的值存入二维度数组
                datas[i-starRow][j-starCell] = value;
                /*System.out.println("i-starRow = "+(i-starRow));
                System.out.println("i-starRow = "+(i-starRow));*/
            }
        }
    } catch (EncryptedDocumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InvalidFormatException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}  catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
        return datas;
    }
}

5 测试数据读入功能是否正常的代码

package inputDemo;

import java.util.Arrays;

public class Test {
    public static void main(String[] args) {
        //int sheetNum,int starRow,int endRow,int starCell,int endCell
        Object[][] datas = ExcelUtil.read(1,2,9,4,7);
        for(Object[] objects : datas){
            for(Object object : objects){
                System.out.print("【"+object+"】");
            }
            System.out.println();
        }
    }
}

6 运行结果

【https://hao.360.cn/?a1004】【post】【1】【1】
【https://hao.360.cn/?a1004】【post】【2】【2】
【https://hao.360.cn/?a1004】【post】【3】【3】
【https://hao.360.cn/?a1004】【post】【4】【4】
【https://hao.360.cn/?a1004】【post】【5】【5】
【https://hao.360.cn/?a1004】【post】【6】【6】
【https://hao.360.cn/?a1004】【post】【7】【7】
【https://hao.360.cn/?a1004】【post】【8】【8】
上一篇 下一篇

猜你喜欢

热点阅读