在做自动化测试过程中,我们经常需要从EXcel表中读取数据, 后续程序中还需要利用该数据作为参数输入等。
我们可以抽象一个从excel表中读取数据的类,代码如下:(注意在写这个代码之前一定要保证JXL.jar环境已经配置好。)
package priv.common;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import jxl.Cell;
import jxl.CellType;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
public class excelReadData {
//申明一个读取数据的方法,并且有返回值
public String[][] f_readexcel(String filePath, String sheetname) {
// 输入流,声明读取变量is 用户读取excel表格
InputStream is = null;
// 构建Workbook对象
Workbook workbook = null;
// 传入filepath中描述的路径,实例化is。
try {
is = new FileInputStream(filePath);
} catch (FileNotFoundException e) {
}
// 将is中读取到的excel表格赋值给workbook
try {
workbook = Workbook.getWorkbook(is);
} catch (BiffException | IOException e) {
}
// 声明变量sheet,将workbook中的sheet名为sheetname的表格读取到sheet中
Sheet sheet = workbook.getSheet(sheetname);
// 声明一个数组,用于存放sheet中的值,长度根据sheet中的实际长度定义
String cases[][] = new String[sheet.getRows()][sheet.getColumns()];
int i;
int j;
// 通过两层循环,将sheet中的数据读取到数组中
// 遍数组的历行
for (i = 0; i < sheet.getRows(); i++) {
// 遍数组的历列
for (j = 0; j < sheet.getColumns(); j++) {
// 声明一个单元格变量,通过getCell(j,i)得到单元格中的值,读取每列每行,getCell(j,i)前面的j是列,i是行
Cell cellA1 = sheet.getCell(j, i);
// 如果当前单元格的格式是label(文本类型)类型的,就读取到数组中,需要保证excel表中数字类型的单元格手动调整成文本类型
if (cellA1.getType().equals(CellType.LABEL)) {
// 获取string类型单元格的数据
cases[i][j] = cellA1.getContents();
}
else if(cellA1.getType().equals(CellType.NUMBER)) {
cases[i][j] = String.valueOf(cellA1.getContents());
}
}
}
// 将excel表关闭
workbook.close();
// 将输入流关闭
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
// 返回已经读取到sheet数据的数组
return cases;
}
}