Ошибка: TypeError: '>' not supported between instances of 'NoneType' and 'int'
Есть код для работы с Excel:
wb = openpyxl.load_workbook('D:\lab_report.xlsx')
sht = wb.active
sht.unmerge_cells('C31:D31')
rep = sht['C31'].value
for i in range(45,500):
if sht['AX'+ str(i)].value > 0:
sht['AY' + str(i)] = rep
else:
break
wb.save('D:\lab_report.xlsx')
При выполнении выдает ошибку:
TypeError: '>' not supported between instances of 'NoneType' and 'int'
Столбец в условии содержит строго числа.
Не могу разобраться.
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
В ячейках Excel файла могут быть пустые значения, представленные как None в OpenPyxl.
Как и сказано в ошибке, None нельзя сравнивать с объектами титпа int. Воспроизведение ошибки:
if None > 0:
print("oops!")
---------------------------------------------------------------------------
...
TypeError: '>' not supported between instances of 'NoneType' and 'int'
Поэтому сначала нужно сделать проверку не является ли объект None:
if sht['AX{i}'+ str(i)].value is not None and sht['AX'+ str(i)].value > 0:
а еще лучше / понятнее сделать так (для Python 3.8+):
for i in range(45,500):
if (val := sht[f'AX{i}'].value) is None or val <= 0:
break
sht[f'AX{i}'] = rep