上一篇讲解了TestNG的数据驱动使用:测试驱动技术(TDD)系列之二:TestNG参数化详解测试数据格式如下图(junit4也类似):@DataProviderpublicObject[][]dp1(){returnnewObject[][]{newObject[]{1,1,0},newObject[]{2,1,1},newObject[]{2,1,2},};}可以看到,如果数据量不大,这种形式还可以,但是如果测试数据量很大,显然维护效率不高代码中的测试数据!在做数据驱动的工作中,通常会将测试数据保存在excel中,然后在excel上进行读写相关操作。这里以java为例,带大家熟悉一下poi-ooxmljar包的使用,并为大家讲解一下这个jar包控制excel的核心API。poi-ooxmljar介绍jar包导入Maven中的pom配置信息如下org.apache.poipoi-ooxml4.1.2首先介绍几个概念,整个excel文件称为工作簿,每个工作表称为一个Sheet,每个单元格称为一个cellapi详解打开xlsx格式文档XSSFWorkbookworkbook=newXSSFWorkbook(newFileInputStream("E:\\test.xlsx"));打开xls格式文件HSSFWorkbookworkbook=newHSSFWorkbook(newFileInputStream("E:\\test.xls"));关闭文档workbook.close();通过id获取工作表,0表示第一个工作表Sheet=workbook.getSheetAt(0);通过工作表名称Sheet=workbook.getSheet("test1")获取工作表;创建一个名为test2workbook.createSheet("test2")的工作表;创建一个名为test3的工作表,并将第一个工作表中的值复制到workbook.cloneSheet(0,"test3");获取工作表中有效数据行数intiRowNum=sheet.getPhysicalNumberOfRows();获取工作表中有效数据列的数量intiColumnNum=sheet.getRow(0).getPhysicalNumberOfCells();获取第一列第一行的数据类型CellTypetype=sheet.getRow(1).getCell(0).getCellType();Cell的数据类型包括:NUMERIC、numericSTRING、StringFORMULA,公式类型BLANK,空值BOOLEAN,布尔类型ERROR,错误获取第一列第一行的数据值Stringvalue=sheet.getRow(1).getCell(0).getStringCellValue();把第一列和第一行的数据设置为kevin1sheet.getRow(1).getCell(0).setCellValue("kevin1");注意:如果涉及写入excel或创建工作表,例如:workbook.createSheet("test2");workbook.cloneSheet(0,"test3");sheet.getRow(1).getCell(0).setCellValue("kevin1");必须加上下面三个语句FileOutputStreamis=newFileOutputStream("E:\\test.xls");workbook.write(is);is.close();完成代码.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importorg.apache.poi.hssf.usermodel.HSSFWorkbook;importorg.apache.poi.ss.usermodel.CellType;importorg.apache.poi.ss.usermodel.Sheet;importorg.apache.poi.xssf.usermodel.XSSFWorkbook;publicclassExcelBaseDemo{publicstaticvoidmain(String[]args)throwsFileNotFoundException,IOException{//XSSFWorkbookworkbook=newXSSFWorkbook(newFileInputStream("E:\\test.xlsx"));//打开xlsx格式HSSFWorkbookworkbook=newHSSFWorkbook(newFileInputStream("E:\\test.xls"));//打开xls格式//获取工作表//Sheetsheet=workbook.getSheetAt(0);Sheetsheet=workbook.getSheet("test1");//workbook.createSheet("test2");//创建sheet,命名为test2//workbook.cloneSheet(0,"test3");//创建sheet,命名为test3,并复制第一个sheet中的值intiRowNum=sheet.getPhysicalNumberOfRows();//获取sheet中有效数据行数intiColumnNum=sheet.getRow(0).getPhysicalNumberOfCells();//获取sheet中有效数据行数columnsSystem.out.println(iRowNum);System.out.println(iColumnNum);CellTypetype=sheet.getRow(1).getCell(0).getCellType();//获取第一行第一列的数据类型ofSystem.out.println(type);Stringvalue=sheet.getRow(1).getCell(0).getStringCellValue();//获取第一列第一行的数据值System.out.println(value);sheet.getRow(1).getCell(0).setCellValue("kevin1");//设置第一列的数据和firstrowtokevin1//如果涉及写入excel或者创建sheet操作,必须添加下面三个语句FileOutputStreamis=newFileOutputStream("E:\\test.xls");workbook.write(is);is.close();工作簿。close();}}好了,使用java控制excel的方法就介绍到这里了。大家可以考虑利用以上知识,如何在测试框架(TestNG\Junit4)中实现调用excel中测试数据的操作呢?这里我先挖个坑,下篇文章补坑给大家完整代码,请继续关注!