【问题标题】:Read all the data from the excel从excel中读取所有数据
【发布时间】:2017-01-19 19:09:16
【问题描述】:

我想从第一行读取数据并执行操作,然后写入结果,然后读取第二行,直到 Excel 文件中没有更多数据为止。

我的问题:

  • 为什么迭代器不起作用?
  • 为什么(Selenium 的)driver.findElement 不做它应该做的事情?

主程序

  @Test
    public void test() throws Exception {
        String sPath = "default.xlsx";
        DataHelper.setExcelFile(sPath, "sheet1");
        XSSFRow row;
        XSSFCell cell;
        boolean flag = true;
        XSSFSheet sheet = ExcelWSheet;
        Iterator rows = sheet.rowIterator();
        while (rows.hasNext()) {
            row = (XSSFRow) rows.next();
            Iterator cells = row.cellIterator();
            List <String> obj = new ArrayList<String>();
            while (cells.hasNext()) {
               cell = (XSSFCell) cells.next();
               String cellobj = cell.getStringCellValue();
               if(flag)
               {
                   driver.findElement(By.id("text")).sendKeys(cell);
                   driver.findElement(By.id("text")).click();
                   driver.findElement(By.id("text")).clear;
               }
            }
        }   
    }

DataHelper.java

public class DataHelper {
    public static XSSFSheet ExcelWSheet;
    private static XSSFWorkbook ExcelWBook;
    private static XSSFCell cell;
    private static String path;

    public static void setExcelFile(String path, String SheetName) throws Exception {
        path = path;
        FileInputStream ExcelFile = new FileInputStream(path);
        ExcelWBook = new XSSFWorkbook(ExcelFile);
        ExcelWSheet = ExcelWBook.getSheet(SheetName);

    }

}

Excel 数据

邮箱、密码

你好,123

你好1,123

【问题讨论】:

  • 这里似乎有什么问题?你调试过你的代码吗?文件是否正确读取?代码是否进入了两个while循环?
  • 请阅读How to Ask。请提供您尝试过的代码和执行结果,包括任何错误信息等。同时提供Excel工作表的内容。

标签: javascript java selenium


【解决方案1】:

经过一般清理(过度使用静态等)后,迭代器运行良好。请参阅下面的代码。

关于 Selenium 调用,我没有知识可以提供帮助。我建议您下次将此作为两个单独的问题发布。我所知道的是,如果您想查看文件本身的任何更改,您需要将工作簿显式保存到文件中。我怀疑这就是你想要的。那里有很多易于查找和理解的示例。

public void test() throws Exception {
    String sPath = "default.xlsx";
    DataHelper dataHelper = new DataHelper(sPath, "sheet1");
    XSSFSheet sheet = dataHelper.getExcelWSheet();
    Iterator<Row> rows = sheet.rowIterator();
    while (rows.hasNext()) {
        Row row = rows.next();
        Iterator<Cell> cells = row.cellIterator();
        while (cells.hasNext()) {
            Cell cell = cells.next();
            String cellobj = cell.getStringCellValue();
            if(flag) {
                driver.findElement(By.id("text")).sendKeys(cell);
                driver.findElement(By.id("text")).click();
                driver.findElement(By.id("text")).clear;
            }                
        }
    }
}

public class DataHelper {
    private XSSFSheet excelWSheet;
    private XSSFWorkbook excelWBook;

    public DataHelper(String path, String SheetName) throws Exception {
        FileInputStream ExcelFile = new FileInputStream(path);
        excelWBook = new XSSFWorkbook(ExcelFile);
        excelWSheet = excelWBook.getSheet(SheetName);
    }

    public XSSFSheet getExcelWSheet() {
        return excelWSheet;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多