В чем ошибка в коде? Библиотека openpyxl
КОД:
import openpyxl
wb = openpyxl.open('путь к файлу')
wb.active = 1
ws = wb.active
for row in ws.iter_rows('B4:F4'):
for cell in row:
if cell.value == "Анна":
print(ws.cell(row=cell.row, column=2).value)
Код выдает ошибку: for row in range(min_row, max_row + 1):
TypeError: 'str' object cannot be interpreted as an integer
Код к этой таблице
Требуется найти ячейку со значением "Анна" и вывести в консоль
В чем состоит проблема?
Ответы (1 шт):
Если уж на то пошло, вам нужно провести итерацию по столбцам а не по строкам. Предлагаю такой вариант:
Если значения расположены в одной строке, то необходимо "пробежать" по столбцам и конкретной строке(в Вашем случае 4). Если данные расположены в нескольких строках, то можно использовать вложенный цикл.
пример для одной строки:
for col in range(2,ws.max_column + 1):
Пример для нескольких строк:
for row in range("начало отсчёта","конец отсчёта"):
for col in range("начало отсчёта","конец отсчёта"):
#условие
print(ws.cell(row,col)
Далее определяем условия, обязательно делаем проверку на None:
if ws.cell(4,col).value is not None and ws.cell(4,col).value == 'Анна':
Ну и сам вывод:
print(ws.cell(4,col).value)
Полный код:
import openpyxl as op
wb = op.load_workbook("путь к файлу")
wb.active
ws = wb.active
for col in range(2,ws.max_column + 1):
if ws.cell(4,col).value is not None and ws.cell(4,col).value == 'Анна':
print(ws.cell(4,col).value)
