Если ячейка в определенной строке содержит «x», как мне получить конкретное имя столбца, в котором присутствует x, с помощью Java

#java #excel #selenium #for-loop

Вопрос:

Образец листа excel (я использую гораздо больший лист excel):

Колонка0 Колонка1 Колонка2 Колонка3 Колонка4 Колонка5
строка 0 красный x x x
строка 1 Оранжевый x x
строка 2 Желтый x x x
строка 3 Зеленый x x x
строка 4 Синий x x
строка 5 Фиолетовый x x
строка 6 Розовый x

Давайте предположим, что я хочу выбрать строку 3. Как мне получить имена столбцов, в которых присутствуют буквы x’? Для строки 3 я хочу отобразить на своей консоли «столбец 2, столбец 3, столбец 5». Я также пытаюсь начать с определенного индекса столбца, поэтому у меня был столбец, который отличался от x. Поэтому для примера мне нужно выполнить итерацию из столбца 2—>столбца 5, затем определить в строке 3, в какой из ячеек есть x, а затем определить имена этих столбцов. В моем коде ниже у меня были номера в реальном времени, которые я использую.

 //find x's in certain row
        //pick row 15
        int rowIndex = 15;
        //start at column 9 and iterate to column 33
        for (int columnIndex = 9; columnIndex<33; columnIndex  ){
            Row row = CellUtil.getRow(rowIndex, sheet);
            Cell cell = CellUtil.getCell(row, columnIndex);
            //if row contains x in specific cells, get column name
            //progTypes is the name of the columns appearing in row index 0
            if(cell.getStringCellValue() == "x") {
                for(int progTypes = 9; progTypes < 33; progTypes  ) {
                    for (int firstRow = 0; firstRow < 0; firstRow  ) {
                        Row fRow = CellUtil.getRow(firstRow, sheet);
                        Cell fColumn = CellUtil.getCell(fRow, progTypes);
                        String columnName = fColumn.getStringCellValue();
                        System.out.println(columnName);
                    }
                }
            }

 

Ответ №1:

Если я правильно понял, вам не нужны два цикла for в вашем случае if, так как у вас уже есть индекс ячейки.

 if(cell.getStringCellValue() == "x") {
  Row fRow = CellUtil.getRow(0, sheet);
  Cell fColumn = CellUtil.getCell(fRow, columnIndex);
  String columnName = fColumn.getStringCellValue();
  System.out.println(columnName);
}
 

Ответ №2:

Используйте POI Apache. Существует ряд примеров доступа к электронным таблицам и их изменения по адресу https://poi.apache.org/components/spreadsheet/examples.html