完成Webdriver测试后的Apache POI更新单元

时间:2016-08-08 10:13:59

标签: java selenium-webdriver apache-poi browser-automation excel-2016

所以解释起来有点复杂,但我会尽我所能。

我想要一个带有我称之为Count的单元格的excel文件,这个数字的目的是手动设置它,所以当我读取工作表中的数据时,它会读取该行的数据,并在测试结束时我想在这个数字上添加一个。

    public String[] readNewHireData() {
        String ex2[] = new String[100];

        try {
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");

            File file = new File("C:/Users/saahme/Documents/filepath.xls");

            Workbook workbook = WorkbookFactory.create(file);
            Sheet worksheet = workbook.getSheetAt(1);

            Row rowCount = worksheet.getRow(1);
            Cell count = rowCount.getCell(11);
            theCount =  new BigDecimal(count.getNumericCellValue()).toPlainString();

            Row row1 = worksheet.getRow(Integer.parseInt(theCount));
            Cell firstName = row1.getCell(0);
            ex2[0] = firstName.getStringCellValue();

 } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InvalidFormatException e) {
            e.printStackTrace();
        }
        return ex2;
    }

enter image description here

好的,所以当测试运行时,我希望它读取计数并且该数字为1,这意味着当我的测试获得每行的stringValue时它将变为1(我已将代码缩短为make它更具可读性)。一旦测试结束,我希望它在计数上添加一个。所以我试着这样做。

 public void writeToExcel() {
        try {
            HSSFWorkbook workbook2 = new HSSFWorkbook();
            FileOutputStream fos = new FileOutputStream("C:/Users/saahme/Documents/filepath.xls");
            HSSFSheet worksheet2 = workbook2.getSheetAt(1);
            HSSFRow rowCount = worksheet2.getRow(1);
            HSSFCell cellL2 = rowCount.createCell(12);
            cellL2.setCellValue(theCount + 1);
            workbook2.write(fos);

        } catch(FileNotFoundException e) {
            e.printStackTrace();
        } catch(IOException e) {
            e.printStackTrace();
        }

    }

但是我已经意识到我正在创建一个新文件并覆盖我想要做的旧文件,我只想编辑readNewHireData末尾的单元格并添加一个但是对于我的生活,无论我在尝试什么都行不通。我确实试过了

 Row rowCount2 = worksheet.getRow(1);
            Cell count2 = rowCount2.getCell(11);
            count2.setCellValue(theCount + 1);

但这似乎不起作用,我觉得我非常接近这里的答案,只需要在那里轻推我。一如既往地感谢您的帮助:)

0 个答案:

没有答案