《手把手教你》系列技巧篇(六十八)-java+ selenium自动化测试 - 读写excel文件 - 下篇(详细教程)
1.简介
今天继续操作Excle,小伙伴或者童鞋们是不是觉得宏哥会介绍第三种工具操作Excle,今天不介绍了,有两种就够用了,其实一种就够用了,今天主要是来介绍如何使用不同的数据类型读取Excel文件。在实际测试中,您可能不得不处理除String之外的多个数据类型的Excel文件数据。 在本教程中,我们将使用不同的数据类型读取Java中的excel文件。
2.准备不同数据类型的Excle
1.我们将尝试读取下面的excel,因为可以看出,excel在前四个单元中有Date,Number,Boolean和Label(常规字符串)数据。

2.把这个文件放到eclipse项目中,如下图所示:

3.JXL使用不同的数据类型读取Excel文件
3.1代码设计
1.新建一个OperateExcle.java的文件,输入如下代码。

3.2参考代码
package lessons; import java.io.File;
import java.io.IOException; import jxl.BooleanCell;
import jxl.Cell;
import jxl.CellType;
import jxl.DateCell;
import jxl.LabelCell;
import jxl.NumberCell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException; /**
* @author 北京-宏哥
*
* @公众号:北京宏哥
*
* 《手把手教你》系列技巧篇(六十八)-java+ selenium自动化测试 - 读写excel文件 -下篇(详细教程)
*
* 2022年2月15日
*/ public class OperateExcle { public static void main(String[] args) {
//从指定位置的文件创建工作簿对象;根据计算机上的位置更改文件的路径。
Workbook wrk1;
try { wrk1 = Workbook.getWorkbook(new File(".\\Files\\test-data1.xls")); //获取工作簿中第一个工作表的引用
Sheet sheet1 = wrk1.getSheet(0); //使用工作表的getCel(int col, int row)方法获取对单元的引用
Cell cell1 = sheet1.getCell(0, 0);
Cell cell2 = sheet1.getCell(1, 0);
Cell cell3 = sheet1.getCell(2, 0);
Cell cell4 = sheet1.getCell(3, 0); DateCell dCell = null;
NumberCell nCell = null;
BooleanCell bCell = null;
LabelCell lCell = null; // 检查单元格内容的类型,并将该对象转换为适当的引用类型
if (cell1.getType() == CellType.DATE)
dCell = (DateCell) cell1; if (cell2.getType() == CellType.NUMBER)
nCell = (NumberCell) cell2; if (cell3.getType() == CellType.BOOLEAN)
bCell = (BooleanCell) cell3; if (cell4.getType() == CellType.LABEL)
lCell = (LabelCell) cell4; // 显示单元格内容
System.out.println("Value of Date Cell is: " + dCell.getDate());
System.out.println("Value of Number Cell is: " + nCell.getValue());
System.out.println("Value of Boolean Cell is: " + bCell.getValue());
System.out.println("Value of Label Cell is: " + lCell.getString()); } catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} } }
3.3运行代码
1.运行代码,右键Run AS->Java Appliance,控制台输出,如下图所示:

4.POI使用不同的数据类型读取Excel文件
4.1代码设计
1.新建一个ReadDiffExcel.java的文件,输入如下代码。

4.2参考代码
package lessons; import java.io.File;
import java.io.FileInputStream;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; /**
* @author 北京-宏哥
*
* @公众号:北京宏哥
*
* 《手把手教你》系列技巧篇(六十八)-java+ selenium自动化测试 - 读写excel文件 -下篇(详细教程)
*
* 2022年2月15日
*/
public class ReadDiffExcle { public static void main(String[] args) {
File f = new File(".\\Files\\test-data1.xls");
try {
FileInputStream is = new FileInputStream(f);
@SuppressWarnings("resource")
HSSFWorkbook wbs = new HSSFWorkbook(is);
HSSFSheet childSheet = wbs.getSheetAt(0);
// System.out.println(childSheet.getPhysicalNumberOfRows());
System.out.println("有行数" + childSheet.getLastRowNum());
for (int j = 0; j < childSheet.getLastRowNum(); j++) {
HSSFRow row = childSheet.getRow(j);
// System.out.println(row.getPhysicalNumberOfCells());
// System.out.println("有列数" + row.getLastCellNum());
if (null != row) {
for (int k = 0; k < row.getLastCellNum(); k++) {
HSSFCell cell = row.getCell(k);
if (null != cell) {
switch (cell.getCellType()) {
case NUMERIC: // 数字
System.out.print(cell.getNumericCellValue()
+ " ");
break;
case STRING: // 字符串
System.out.print(cell.getStringCellValue()
+ " ");
break;
case BOOLEAN: // Boolean
System.out.print(cell.getBooleanCellValue()
+ " ");
break;
case FORMULA: // 公式
System.out.print(cell.getCellFormula() + " ");
break;
case BLANK: // 空值
System.out.print(" ");
break;
case ERROR: // 故障
System.out.print(" ");
break;
default:
System.out.print("未知类型 ");
break;
}
} else {
System.out.print("- ");
}
}
}
System.out.println();
}
} catch (Exception e) {
e.printStackTrace();
}
} }
4.3运行代码
1.运行代码,右键Run AS->Java Appliance,控制台输出,如下图所示:

5.小结
宏哥在代码运行的时候由于POIjar包的升级,有些变量可能会和旧的版本有区别,运行过程报错:java.lang.ClassNotFoundException: org.apache.commons.math3.util.ArithmeticUtils。可能是由于引入小数,需要数学的jar包,将其引入项目中成功解决报错。

《手把手教你》系列技巧篇(六十八)-java+ selenium自动化测试 - 读写excel文件 - 下篇(详细教程)的更多相关文章
- 《手把手教你》系列技巧篇(六十)-java+ selenium自动化测试 - 截图三剑客 -中篇(详细教程)
1.简介 前面我们介绍了Selenium中TakeScreenshot类来截图,得到的图片是浏览器窗口内的截图.有时候,只截浏览器窗口内的图是不够的,而且TakeScreenshot截图只针对浏览器的 ...
- 《手把手教你》系列技巧篇(六十七)-java+ selenium自动化测试 - 读写excel文件 - 中篇(详细教程)
1.简介 前面介绍了POI可以操作excel,也简单的提到另一个操作excle的工具,本篇介绍一个其他的可以操作excel的工具,但是这个工具有一个前提,excel文件版本只能是97-2003版本,如 ...
- 《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)
1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍By ClassName.看到ID,NAME这些方法的讲解,小伙伴们和童鞋们应该知道,要做好Web自动化测试,最好是需要了 ...
- 《手把手教你》系列技巧篇(六十六)-java+ selenium自动化测试 - 读写excel文件 - 上篇(详细教程)
1.简介 在自动化测试,有些我们的测试数据是放到excel文件中,尤其是在做数据驱动测试的时候,所以需要懂得如何操作获取excel内的内容.由于java不像python那样有直接操作Excle文件的类 ...
- 《手把手教你》系列技巧篇(六十九)-java+ selenium自动化测试 - 读取csv文件(详细教程)
1.简介 在实际测试中,我们不仅需要读取Excle,而且有时候还需要读取CSV类的文件.如何去读取CSV的文件,宏哥今天就讲解和分享一下,希望对你能够有所帮助.前面介绍了如何读取excel文件,本篇介 ...
- 《手把手教你》系列技巧篇(十七)-java+ selenium自动化测试-元素定位大法之By css上卷(详细教程)
1.简介 CSS定位方式和xpath定位方式基本相同,只是CSS定位表达式有其自己的格式.CSS定位方式拥有比xpath定位速度快,且比CSS稳定的特性.下面详细介绍CSS定位方式的使用方法.xpat ...
- 《手把手教你》系列技巧篇(十一)-java+ selenium自动化测试-元素定位大法之By tag name(详细教程)
1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍By ClassName.看到ID,NAME这些方法的讲解,小伙伴们和童鞋们应该知道,要做好Web自动化测试,最好是需要了 ...
- 《手把手教你》系列技巧篇(七)-java+ selenium自动化测试-宏哥带你全方位吊打Chrome启动过程(详细教程)
1.简介 经过前边几篇文章和宏哥一起的学习,想必你已经知道了如何去查看Selenium相关接口或者方法.一般来说我们绝大多数看到的是已经封装好的接口,在查看接口源码的时候,你可以看到这个接口上边的注释 ...
- 《手把手教你》系列技巧篇(九)-java+ selenium自动化测试-元素定位大法之By name(详细教程)
1.简介 上一篇宏哥已经介绍了通过id来定位元素,今天继续介绍其他剩下的七种定位方法中的通过name来定位元素.本文来介绍Webdriver中元素定位方法之By name,顾名思义,就是我们想要定位的 ...
随机推荐
- IDEA maven 项目修改代码不生效,mvn clean、install 后才生效
Maven项目进行修改代码后我们重新运行代码,查看我们target目录下的class文件是否发生了变化. 如何查看class文件,鼠标移到项目,点击右键,然后点击 show in Explore ...
- 《剑指offer》面试题53 - II. 0~n-1中缺失的数字
问题描述 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0-n-1之内.在范围0-n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字. 示例 1: 输入: [ ...
- 【刷题-LeetCode】201 Bitwise AND of Numbers Range
Bitwise AND of Numbers Range Given a range [m, n] where 0 <= m <= n <= 2147483647, return t ...
- unity3d录音
using System.Collections; using System.Collections.Generic; using UnityEngine; public class record : ...
- thrift基础知识
1. 架构图 Thrift 包含一个完整的堆栈结构用于构建客户端和服务器端.下图描绘了 Thrift 的整体架构. 图 1. 架构图 如图所示,图中黄色部分是用户实现的业务逻辑,褐色部分是根据 Thr ...
- python 爬虫爬取历年双色球开奖信息
目前写的这些爬虫都是些静态网页,对于一些高级网页(像经过JS渲染过的页面),目前技术并不能解决,自己也是在慢慢学习过程中,如有错误,欢迎指正: 对面前端知识本人并不懂,过程中如果涉及到前端知识,也是百 ...
- Kubernetes中部署wordpress+mysql(六)
经过前面的内容其实对k8s已经有了服务迁移的能力了,下面这篇文章主要是用来搭建一些后面要用的组件 一.创建wordpress命名空间 kubectl create namespace wordpres ...
- *衡树 Treap(树堆) 学习笔记
调了好几个月的 Treap 今天终于调通了,特意写篇博客来纪念一下. 0. Treap 的含义及用途 在算法竞赛中很多题目要使用二叉搜索树维护信息.然而毒瘤数据可能让二叉搜索树退化成链,这时就需要让二 ...
- python 小兵(4)之文件操作
文件操作 初始文件操作 使用Python来读写文件是非常简单的操作,我们使用open()函数来打开一个文件,获取到文件句柄,然后通过文件句柄就可以进行各种各样的操作了 根据打开方式的不同能够执行的操作 ...
- 多线程中sleep方法,简单介绍。
一 是什么? package com.aaa.threaddemo; /* * 多线程中的sleep方法? * sleep 隶属于Thread的方法,顾名思义,让线程睡一会. 1 public sta ...