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包,将其引入项目中成功解决报错。
每天学习一点,今后必成大神-
往期推荐(由于跳转参数丢失了,所有建议选中要访问的右键,在新标签页中打开链接即可访问):
Appium自动化系列,耗时80天打造的从搭建环境到实际应用精品教程测试
Python接口自动化测试教程,熬夜87天整理出这一份上万字的超全学习指南
Python+Selenium自动化系列,通宵700天从无到有搭建一个自动化测试框架
Java+Selenium自动化系列,仿照Python趁热打铁呕心沥血317天搭建价值好几K的自动化测试框架
Jmeter工具从基础->进阶->高级,费时2年多整理出这一份全网超详细的入门到精通教程
Fiddler工具从基础->进阶->高级,费时100多天吐血整理出这一份全网超详细的入门到精通教程