Проверка Openpyxl на пустую ячейку - PullRequest
11 голосов
/ 26 октября 2011

openpyxl кажется отличным методом использования Python для чтения Excel файлов, но я столкнулся с постоянной проблемой. Мне нужно определить, пуста ли ячейка или нет, но не могу сравнить какие-либо из свойств ячейки. Я пробовал приводить в качестве строки и использовать "", но это не сработало. Тип ячейки, когда она пуста, None или NoneType, но я не могу понять, как сравнить объект с этим.

Предложения? Я понимаю, что openpyxl находится в стадии разработки, но, возможно, это более общая проблема Python .

Ответы [ 4 ]

21 голосов
/ 07 декабря 2011

Чтобы сделать что-то, когда ячейка не пуста, добавьте:

if cell.value:

, что в python такое же, как если бы значение ячейки не было None (то есть: если не cell.value == None:)

Обратите внимание, чтобы избежать проверки пустых ячеек, вы можете использовать

worksheet.get_highest_row()

и

worksheet.get_highest_column()

Также я нашел это полезным (хотя это может быть не очень хорошим решением), если вы хотитеиспользуйте содержимое ячейки как строку независимо от типа, который вы можете использовать:

unicode(cell.value)
13 голосов
/ 27 декабря 2015

Это сработало для меня.

if cell.value is None:
    print("Blank")
else:
    print("Not Blank")
0 голосов
/ 19 мая 2018

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 заключается в том, что она будет также считать пустые столбцы, тем самым побеждая цель.

0 голосов
/ 09 сентября 2016

Вы можете изменить ячейку или ячейки, которые вы хотите проверить Также вы можете кодировать, например:

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")
...