Я использую Selenium 2 и создал файл LoginTest.java, который читается из файла excel с данными. Я читаю имя пользователя и пароль и запускаю его на странице входа. На самом деле это нормально. Данные выглядит следующим образом:Чтение значений ячейки из файла excel с использованием Apache POI
user1 PW1
user2 pw2
user3 PW3
user4 PW4
Проблема заключается в следующем: если я изменить файл первенствовать и изменить количество аргументов, к чему-то вроде этого :
user1 PW1
user2 pw2
и запустить тот же сценарий, то ReadExcel
файл класса г eturns the error msg:
«Нет поддержки для этого типа ячеек».
Что происходит, я думаю, что строки 3 и 4 использовали содержать данные в своих клетках (user3 PW3 и user4 PW4), и теперь они не ... так что есть что-то другое о тех, ранее используемые ячейки, которые мой класс ExcelRead()
не ловит, чтобы игнорировать. Я буду держать пари, что ячейка теперь «null», где она раньше не была или наоборот. Что-то по-разному относится к ячейкам, которые ранее содержали данные против ячеек, которые никогда не содержали данные.
(я нашел ExcelRead
в Интернете и использую его. Я сам не создал его с нуля. Кажется, что он отлично работает с файлами xcel, за исключением этой «проблемы»).
Спасибо за любую помощь.
public class ExcelRead {
public Object[][] main(String[] args) throws Exception{
File excel = new File(args[0]);
FileInputStream fis = new FileInputStream(excel);
HSSFWorkbook wb = new HSSFWorkbook(fis);
HSSFSheet ws = wb.getSheet(args[1]);
int rowNum = ws.getLastRowNum() + 1;
int colNum = ws.getRow(0).getLastCellNum();
String[][] data = new String[rowNum][colNum];
for (int i = 0 ; i < rowNum ; i++) {
HSSFRow row = ws.getRow(i);
for (int j = 0 ; j < colNum ; j++) {
HSSFCell cell = row.getCell(j);
String value = cellToString(cell);
data[i][j] = value ;
//System.out.println("the value is " + value);
}
}
return data;
}
public static String cellToString(HSSFCell cell) {
int type;
Object result;
type = cell.getCellType();
switch (type) {
case 0: // numeric value in Excel
result = cell.getNumericCellValue();
break;
case 1: // String Value in Excel
result = cell.getStringCellValue();
break;
default:
throw new RuntimeException("There is no support for this type of cell");
}
return result.toString();
}
Да, я понимаю, что сейчас, спасибо. Я добавил в оператор switch для проверки пустого, но цикл for возвращает пустое, однако, я бы хотел, чтобы это произошло, когда я удаляю данные в строке, чтобы строка не возвращалась вообще. Думаю, я не понимаю, как количество строк определяется классом POI. В моем примере я удалил строки 3 и 4, но метод ExcelRead все еще возвращает 4 строки (2 с данными и 2 с пробелами). – RalphF
У вас есть пустые строки с пустыми ячейками. Если вы просто хотите избавиться от этого, удалите строки, щелкнув правой кнопкой мыши на заголовке строки слева от строк, а затем нажав «Удалить» в контекстном меню. Это оставит вам только строки с данными. – Faiz
Я получаю это, но я хотел знать, какая разница в ячейке между данными удаленных ячеек и ячейкой, в которой никогда не было данных? – RalphF