使用 Java 和 JXL / JExcel 阅读电子表格

Reading spreadsheets with Java and JXL / JExcel

我的代码正在打开电子表格并只读取最后一行...我做错了什么?

Workbook workbook = Workbook.getWorkbook(new File("C:/promocoes.xls"));

//Number of lines of plannilha
Sheet sheet = workbook.getSheet(0);  
int linhas = sheet.getRows();

for(int i = 0; i < linhas; i++){

    Cell a1 = sheet.getCell(0, i);
    Cell a2 = sheet.getCell(1, i);           

    String as1 = a1.getContents();
    String as2 = a2.getContents();

        nomepromocao = as1;
        tipopromocao = as2;         
}
workbook.close();

    driver.findElement(By.name("nomePromocao")).sendKeys(nomepromocao);
    driver.findElement(By.name("descPromocao")).sendKeys(tipopromocao);

您需要在循环中的下一次迭代之前使用这些值:

Workbook workbook = Workbook.getWorkbook(new File("C:/promocoes.xls"));
Sheet sheet = workbook.getSheet(0);  
int rowCount = sheet.getRows();
for(int i = 0; i < rowCount; i++){
    String nomePromocao = sheet.getCell(0, i).getContents();
    String descPromocao = sheet.getCell(1, i).getContents();

    driver.findElement(By.name("nomePromocao"))
          .sendKeys(nomePromocao);

    driver.findElement(By.name("descPromocao"))
          .sendKeys(descPromocao); 
}
workbook.close();

您还可以存储这些值以备后用:

// to store all the records
List<HashMap> records = new ArrayList<HashMap>();
Workbook workbook = Workbook.getWorkbook(new File("C:/promocoes.xls"));
Sheet sheet = workbook.getSheet(0);  
int rowCount = sheet.getRows();
for(int i = 0; i < rowCount; i++){
    HashMap<String, String> record = new HashMap<String, String>();
    record.put("nomepromocao", sheet.getCell(0, i).getContents());
    record.put("tipopromocao", sheet.getCell(1, i).getContents());
    records.add(record);      
}
workbook.close();

// to iterate each record
for(HashMap<String, String> record : records){

    driver.findElement(By.name("nomePromocao"))
          .sendKeys(record.get("nomepromocao"));

    driver.findElement(By.name("descPromocao"))
          .sendKeys(record.get("descPromocao"));

}