Я написал приведенные ниже коды с использованием Apache классов POI для чтения данных из таблицы Excel. в настоящее время он читает имя строки + имя столбца.
Я хотел бы улучшить его, чтобы позволить мне вводить много имен столбцов в случае, если у меня много столбцов данных.
Мне нужна помощь, чтобы понять, как чтобы улучшить его.
в настоящее время он читает только ("rowName", "columnName")
, тестовые данные могут расти горизонтально на листе Excel из столбца A ..... columnN Я хотел что-то подобное ("rowName", "columnNameA" till "columnNameN....")
. Это возможно? или любое другое лучшее предложение ??
public class readexcel {
//method defined for reading a cell
@Keyword
private static findData(String rowName, String columnName) throws IOException {
String cellValue = ReadCellData(rowName, columnName);
System.out.println(cellValue);
}
private static String ReadCellData(String rowName, String columnName) throws IOException {
FileInputStream fis=new FileInputStream(RunConfiguration.getProjectDir() + "/Data Files/testmatrix.xlsx");
Workbook workbook=new XSSFWorkbook(fis);
Sheet sheet = workbook.getSheetAt(0);
Row firstRow = sheet.getRow(0);
int rowNameColIdx = findColumnIdx("Automation TC", firstRow);
int colNameColIdx = findColumnIdx(columnName, firstRow);
Iterator<Row> rowIterator = sheet.iterator();
rowIterator.next();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
if (rowName.equals(row.getCell(rowNameColIdx).getStringCellValue())) {
return row.getCell(colNameColIdx).getStringCellValue();
}
}
return null;
}
private static int findColumnIdx(String text, Row row) {
for (Cell cell : row) {
if (text.equals(cell.getStringCellValue())) {
return cell.getColumnIndex();
}
}
return -1;
}
}
Сценарий чтения данных
def exceldata = CustomKeywords.'test.readexcel.ReadCellData'("rowName", "columnName")