Проверка 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")