天天看点

Java中运用JXL读取Excel中数据

在做自动化测试过程中,我们经常需要从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;
	}
}