每次在selenium webdriver中调用函数时,我都会尝试将数据写入新行
我已经编写了如下函数
public class ExcelFunctions
{
XSSFSheet sh;
int i=0;
public boolean entertestcaseinexcel(String tcnumber, String description, String value) throws IOException
{
boolean status = true;
try
{
XSSFRow row = sh.createRow(i);
row.createCell(0).setCellValue(tcnumber);
row.createCell(1).setCellValue(description);
row.createCell(2).setCellValue(value);
i++;
}
catch(Exception e)
{
status = false;
}
return status;
}
}
我在这里调用上述功能
import Selenium.ExcelFunctions;
public class ExcelWrite {
public static void main(String[] args) throws IOException
{
ExcelFunctions EF = new ExcelFunctions();
File file = new File("D:\\Selenium_Training\\SeleniumNewFile.xlsx");
FileInputStream fis = new FileInputStream(file);
XSSFWorkbook wb = new XSSFWorkbook(fis);
XSSFSheet sh = wb.getSheetAt(0);
EF.entertestcaseinexcel("TC001", "Successfully Logged in", "Pass");
FileOutputStream fout = new FileOutputStream(file);
wb.write(fout);
fout.close();
}
}
问题是我能够运行脚本,但我没有得到任何写入excel的值。
请你帮忙,先谢谢。
答案 0 :(得分:1)
您已在entertestcaseinexcel函数中对单元格编号值进行了硬编码。从您方法的调用者那里获取该值。下面是您可以使用的示例代码 -
public static void writeTestResultToXLSX(File scenarioFile, String testCaseID, int cellNo, resultEnum rEnum) {
FileInputStream fis;
try {
fis = new FileInputStream(scenarioFile);
XSSFWorkbook workbook = (XSSFWorkbook) WorkbookFactory.create(fis);
XSSFSheet sheet = workbook.getSheetAt(0);
int rowNum = Integer.parseInt(testCaseID);
Row row = sheet.getRow(rowNum);
row.createCell(cellNo).setCellValue(rEnum.toString());
fis.close();
FileOutputStream fos = new FileOutputStream(scenarioFile);
workbook.write(fos);
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (EncryptedDocumentException e) {
e.printStackTrace();
} catch (InvalidFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
在上面的代码中,scenarioFile是你想要读取的excel文件的名称,cellNo是你想要将结果写回的cellNo,rEnum是具有预定义值的Enum - PASS和FAIL。 在下面的方法中,您可以调用此函数 -
ApachePOIMethods.writeTestResultToXLSX(scenarioFile, testCaseID, XLSXresultCell, resultEnum.FAIL);
要确保的一件事是不要硬编码任何东西,完整的代码很大,所以不能在这里复制粘贴,以便保持简短的答案,你可以找到完整的脚本here.