Проверка Openpyxl на пустую ячейку
openpyxl
кажется, отличный метод для использования Python для чтения файлов Excel, но я столкнулся с постоянной проблемой. Мне нужно определить, пуста ли ячейка или нет, но не могу сравнить какие-либо из свойств ячейки. Я пробовал приводить в качестве строки и использовать ""
но это не сработало. Тип ячейки, когда она пуста, - None
или NoneType
но я не могу понять, как сравнить объект с этим.
Предложения? Я понимаю, что openpyxl
находится в стадии разработки, но, возможно, это более общая проблема Python.
Ответы
Ответ 1
Чтобы сделать что-то, когда ячейка не пуста, добавьте:
if cell.value:
который в python такой же, как если бы значение ячейки не было None (например: if not cell.value == None:)
Примечание. Чтобы избежать проверки пустых ячеек, вы можете использовать
worksheet.get_highest_row()
и
worksheet.get_highest_column()
Также я нашел это полезным (хотя может и не быть хорошим решением), если вы хотите использовать содержимое ячейки в виде строки независимо от типа, который вы можете использовать:
unicode(cell.value)
Ответ 2
Это сработало для меня.
if cell.value is None:
print("Blank")
else:
print("Not Blank")
Ответ 3
if cell.value is None:
это лучший вариант для использования в этом случае.
если вы хотите использовать его в итерации, вы можете использовать его следующим образом:
ws=wb.active
names=ws['C']
for x in names:
if x.value is None:
break
print(x.value)
Проблема с ws.max_column
и ws.max_row
заключается в том, что он будет также считать пустые столбцы, что ws.max_column
ws.max_row
на цели.
Ответ 4
Вы можете изменить ячейку или ячейки, которые вы хотите проверить
Также вы можете закодировать, например:
import openpyxl
wb = openpyxl.load_workbook("file.xlsx")
sheet = wb.get_sheet_by_name('Sheet1')
if sheet.cell(row = 1, column=7).value == None:
print("Blank")
else:
print("No blank")