每次调用函数时,将数据写入excel文件中的新行

时间:2016-07-05 07:09:19

标签: java excel

每次在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的值。

请你帮忙,先谢谢。

1 个答案:

答案 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.