POI测试使用

Posted jiabei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POI测试使用相关的知识,希望对你有一定的参考价值。

由于项目中使用POI导入,导出excel,对其中几个获取行号和列号的方法返回的结果感到迷惑,
所以特地写了代码进行测试,这里记录一下,方便以后查看.
 
结论:
getLastRowNum: 返回excel中最后一行数据的物理行号减1,空Sheet返回0.
getPhysicalNumberOfRows:返回所有非空行的总行数,空sheet返回0.
getRow(int index): 索引从0开始,0对应excel中的第一行.空行返回null
getLastCellNum:返回行的最后一列数据的列号,从1开始
getPhysicalNumberOfCells:返回所有非空列的总列数.
getCell(int index):索引从0开始,0对应excel中的第一列.空列返回null
 
下列为测试代码,比较简单,不多解释:
// sheet无任何数据
System.out.println("getLastRowNum:"+sheet.getLastRowNum());
System.out.println("getPhysicalNumberOfRows:"+sheet.getPhysicalNumberOfRows());
System.out.println("getLastCellNum:"+sheet.getRow(0).getLastCellNum());// 报错,空指针,行为null
System.out.println("getPhysicalNumberOfCells:"+sheet.getRow(0).getPhysicalNumberOfCells());//报错,空指针,行为null
console:
getLastRowNum:0
getPhysicalNumberOfRows:0
Exception in thread "main" java.lang.NullPointerException
at com.sample.utils.ExcelUtilTest.testPOI(ExcelUtilTest.java:92)
at com.sample.utils.ExcelUtilTest.main(ExcelUtilTest.java:63)
 
 // sheet第一行第一列有数据
System.out.println("getLastRowNum:"+sheet.getLastRowNum());
System.out.println("getPhysicalNumberOfRows:"+sheet.getPhysicalNumberOfRows());
System.out.println("getLastCellNum:"+sheet.getRow(0).getLastCellNum());
System.out.println("getPhysicalNumberOfCells:"+sheet.getRow(0).getPhysicalNumberOfCells());
console:
getLastRowNum:0
getPhysicalNumberOfRows:1
getLastCellNum:1
getPhysicalNumberOfCells:1
 
 // sheet第二行第二列有数据
System.out.println("getLastRowNum:"+sheet.getLastRowNum());
System.out.println("getPhysicalNumberOfRows:"+sheet.getPhysicalNumberOfRows());
System.out.println("getLastCellNum:"+sheet.getRow(0).getLastCellNum());// 报错,空指针,行为null
System.out.println("getPhysicalNumberOfCells:"+sheet.getRow(0).getPhysicalNumberOfCells());// 报错,空指针,行为null
console:
getLastRowNum:1
getPhysicalNumberOfRows:1
Exception in thread "main" java.lang.NullPointerException
at com.sample.utils.ExcelUtilTest.testPOI(ExcelUtilTest.java:92)
at com.sample.utils.ExcelUtilTest.main(ExcelUtilTest.java:63)
 
// sheet第二行第二列有数据
System.out.println("getLastRowNum:"+sheet.getLastRowNum());
System.out.println("getPhysicalNumberOfRows:"+sheet.getPhysicalNumberOfRows());
System.out.println("getLastCellNum:"+sheet.getRow(1).getLastCellNum());
System.out.println("getPhysicalNumberOfCells:"+sheet.getRow(1).getPhysicalNumberOfCells());
System.out.println("getCell:" + row.getCell(1));
console:
getLastRowNum:1
getPhysicalNumberOfRows:1
getLastCellNum:2
getPhysicalNumberOfCells:1
getCell:文本
 
 
 

以上是关于POI测试使用的主要内容,如果未能解决你的问题,请参考以下文章

多个线程(并行测试用例)如何使用Java(Selenium)设置中的Apache POI同时访问同一个excel文件?

多个线程(并行测试用例)如何在 Java(Selenium)设置中使用 Apache POI 同时访问同一个 excel 文件?

java用poi生成word文档,并且给word文档中的中文设置字体,我测试只能改英文字体?

我想用POI在Word里插入一张图片,这是我的测试代码。执行之后word打不开!错误如图中的提示

基于Java+Selenium的WebUI自动化测试框架-----读取Excel文件(POI)

Java用POI导出excel时出现内存不足的问题,测试数据数量为:13万条,已经实现了,每六万条条数据时