=====要进行操作的Excel======

=====对以上Excel的操作==============
//Excel的文件操作
public class ExcelUtilTest {
private XSSFWorkbook excelWBook;//Excel工作薄
private XSSFSheet excelWSheet;//工作表
private XSSFRow row;//行
private XSSFCell cell;//列
private String filePath;//Excel工作薄路径
/**构造方法*/
//设定要操作的Excel的文件路径和Excel文件中的sheet名称
//在读写Excel的时候,均需要调用此方法,设定要操作的Excel文件路径和要操作的sheet名称
public ExcelUtilTest(String path,String sheetName) throws Exception{
FileInputStream excelFile;
this.filePath=path;
try {
//实例化Excel文件的FileInputStream对象
excelFile = new FileInputStream(path);
//实例化Excel文件的XSSFWorkbook对象
excelWBook = new XSSFWorkbook();
//实例化Excel文件的XSSFSheet对象,指定Excel文件中的sheet名称;
excelWSheet = excelWBook.getSheet(sheetName);
} catch (Exception e) {
throw (e);
}
}
/**读取Excel文件指定单元格的函数,此函数只支持后缀为xlsx的Excel文件*/
public String getCellData(int rowNum,int cellNum)throws Exception{
try {
//通过函数参数指定单元格的行号和列表,获取指定的单元格对象
cell = excelWSheet.getRow(rowNum).getCell(cellNum);
//如果单元格的内容为字符串类型,则使用getStringCellValue()获取单元格的内容
//如果单元格的内容为数字类型,则使用getNumericCellValue()获取单元格的内容
String cellData="";
/**获取单元格类型*/
if(cell.getCellType() == XSSFCell.CELL_TYPE_STRING){
cellData = cell.getStringCellValue();
}else if(cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC){
DecimalFormat df = new DecimalFormat("0");//保留小数的方法,0为不保留小数
cellData = df.format(cell.getNumericCellValue());//format()格式化
}
return cellData;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "";
}
}
/**在Excel文件的执行单元格中写输入数据,此函数只支持后缀为xlsx的文件写入
* @param result 结果
* @param rowNum 行数
* @param cellNum 列数
* */
public void setCellData(int rowNum,int cellNum,String result) throws Exception{
try{
//获取Excel文件中的行对象
row=excelWSheet.getRow(rowNum);
//如果单元格为空,则返回Null
cell = row.getCell(cellNum,Row.RETURN_BLANK_AS_NULL);
if(cell == null){
//当单元格对象是null的时候,则创建单元格,因为单元格为空,无法调用单元格对象的setCellValue方法设定单元格的值
cell=row.createCell(cellNum);
//创建单元格后可以调用单元格对象的setCellValue方法设定单元格的值
cell.setCellValue(result);
}else{
//单元格中如果有内容,则可以直接调用单元格对象的setCellValue方法设定单元格的值
cell.setCellValue(result);
System.out.println("单元格值设定完成");
}
//实例化写入Excel文件的文件输出流对象
FileOutputStream fileOut = new FileOutputStream(filePath);
//将内容写入Excel文件中
excelWBook.write(fileOut);
//调用flush方法强制刷新写入文件
fileOut.flush();
//关闭文件输出流对象
fileOut.close();
}catch(Exception e){
e.printStackTrace();
throw(e);
}
}
/**从Excel文件获取测试数据的静态方法
* @throws IOException
* */
public static Object[][] getTestData(String excelFilePath,String sheetName) throws IOException{
//根据参数传入的数据文件路径和文件名称,组合出Excel数据文件的绝对路径
File file=new File(excelFilePath);
//创建FileInputStream对象用于读取Excel文件
FileInputStream inputStream = new FileInputStream(file);
//声明Workbook对象
Workbook workBook = null;
//获取文件类型的后缀名;
String fileExtensionName = excelFilePath.substring(excelFilePath.indexOf("."));
//判断如果是xlsx,则使用 XSSFWorkbook 对象进行实例化
//如果是xls,则使用 SSFWorkbook 对象进行实例化
if(fileExtensionName.equals(".xlsx")){
workBook = new XSSFWorkbook(inputStream);
}else if(fileExtensionName.equals(".xls")){
workBook = new HSSFWorkbook(inputStream);
}
//通过sheetName参数,生成sheet对象
Sheet sheet = workBook.getSheet(sheetName);
//获取Excel数据文件中sheet1中数据的行数,getLastRowNum方法获取数据的最后行号
//getFirstRowNum方法获取数据的第一行行号,相减之后算出数据的行数
int rowCount = sheet.getLastRowNum()-sheet.getFirstRowNum();
System.out.println(sheet+"总行数是"+rowCount);
//创建名为records的list对象来存储从Excel数据文件中获取的数据
List
======Excel的文件操作类的--测试类=====
public class TestExcelUticl {
public static void main(String[] args) throws Exception {
ExcelUtilTest eut = new ExcelUtilTest("configs/测试用例.xlsx", "登录数据");//excel名字,sheet名字
// eut.getCellData(3, 3);
Object[][] arr=eut.getTestData("configs/测试用例.xlsx", "登录数据");
eut.printArray(arr);
}
}
=====应用到自动化数据驱动里,实现自动化数据驱动读取外部Excel文件=========
/**查找元素*/
@Test(dataProvider="loginTestData")
public static void testCase(String loginTestData1,String loginTestData2){
Thread.sleep(5000);//等待
//进入
driver.findElementById("元素定位id").click();
//手机号
AndroidElement modile= driver.findElementById("元素定位id");
modile.clear();
modile.sendKeys(loginTestData1);
//验证码
AndroidElement pws=driver.findElementById("元素定位id");
pws.clear();
pws.sendKeys(loginTestData2);
//点击登录
driver.findElementById("元素定位id").click();
}
/**登录数据驱动
* */
@DataProvider(name="loginTestData")
public static Object[][] data() throws IOException
{
Object[][] arr=ExcelUtilTest.getTestData("configs/测试用例.xlsx", "登录数据");
return arr;
}