从Excel模板读取数据并写入同一文件

时间:2018-06-25 08:36:09

标签: java selenium-webdriver automation

我能够将自动数据写入excel文件。但是,我需要有关如何读取其中带有名称列表的excel模板的帮助,其中每个名称执行相应的方法,然后在该行中将其值写入行。

例如,这是模板:

Excel模板: Excel Template

此外,这是与excel文件中的数据相对应的方法:

public void AbbeyNational(String AbbeyNationalURL, String AN_AccCookiesButton, String AN_MortgageTabButton, String AN_ExistingCustomerButton, String AN_FollowRateButton, String AN_SVRButton, String AN_RateFld) throws InterruptedException, IOException{
    driver.get(AbbeyNationalURL);
    driver.findElement(By.xpath(AN_AccCookiesButton)).click();
    driver.findElement(By.linkText(AN_MortgageTabButton)).click();
    driver.findElement(By.xpath(AN_ExistingCustomerButton)).click();
    driver.findElement(By.xpath(AN_FollowRateButton)).click();
    driver.findElement(By.xpath(AN_SVRButton)).click();

    String a = driver.findElement(By.cssSelector(AN_RateFld)).getText();
    AN_Rate = a.substring(54,58);
    T1 = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(Calendar.getInstance().getTime());
    data.put("2", new Object[]{"Abbey National", AN_Rate, T1});
    System.out.println(AN_Rate);

    TakesScreenshot scrShot = (TakesScreenshot)driver;
    File srcfile = scrShot.getScreenshotAs(OutputType.FILE);
    File DestFile = new File("C:\\Users\\harpreet dugh\\Desktop\\Screenshots\\AbbeyNational.png");
    FileUtils.copyFile(srcfile, DestFile);
}

最后,这是所需的输出:

所需的输出: Desired Output

为了澄清,从输出中可以看出,我想从excel文件中读取贷方“ Abbey National”,执行相应的方法,并将利率和时间写入excel文件中的该贷方。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

我建议使用Apache POI库在excel中执行读写操作。

对于.xls扩展名文件,您需要HSSF;对于.xlsx文件的扩展名,您需要XSSF。

我已经给出了示例ExcelDataConfig文件。请创建一个单独的类作为ExcelDataConfig。

您可以通过创建ExcelDataConfig对象来简单地调用所需的方法。

要阅读和编写代码:

ExcelDataConfig config=new ExcelDataConfig(Excel Path);

//Arguments - Sheet Index, Row Number , column Number(All the index starts from 0.So, give the no of is correctly
config.getData(0,1,1)

// To write the Rate Details in Excel
config.writeData(0,1,2);

// To write the Time Details in Excel
config.writeData(0,1,3);

ExcelDataConfig类:

public class ExcelDataConfig {

    HSSFWorkbook wb;
    HSSFSheet sheet;
    File src;

    public ExcelDataConfig(String excelPath)
    {

        src=new File(excelPath);
        try {

            FileInputStream fis=new FileInputStream(src);
            wb=new HSSFWorkbook(fis);

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

public String getData(int sheetIndex,int row,int column){

        sheet=wb.getSheetAt(sheetIndex);
        String data="";//sheet.getRow(row).getCell(column).getStringCellValue();
        Row r=sheet.getRow(row);
        Cell c=r.getCell(column, Row.RETURN_BLANK_AS_NULL);

        if(c==null){
            data="";
        }
        else{
            if(r.getCell(column).getCellType()==HSSFCell.CELL_TYPE_STRING){
                data=r.getCell(column).getStringCellValue();                
            }else if (r.getCell(column).getCellType()==HSSFCell.CELL_TYPE_NUMERIC){
                int intData=(int) r.getCell(column).getNumericCellValue();
                data=Integer.toString(intData);
            }
        }
        return data;

    }

public void writeData(int sheetIndex,int row,int column,String content,String excelPath ) throws IOException{

        sheet=wb.getSheetAt(sheetIndex);

        sheet.getRow(row).getCell(column).setCellValue(content);
        FileOutputStream fout=new FileOutputStream(src);
        wb.write(fout);

        //wb.close();

    }

}