2016-11-11 3 views
1

Я выложил множество версий этого же вопроса, но просто не могу найти рабочее решение для циклического перехода по группе ячеек и проверки на наличие пустых.Проверка пустых ячеек с OpenPyXl

Вот мой код:

wb = openpyxl.Workbook(write_only=False) 
sheet = wb.get_sheet_by_name('Sheet') 
for i in range(1, 20): 
    if sheet.cell(row=i, column=1).value == None or 'None': 
     print('Space' + str(i)) 
     sheet.cell(row=i, column=1) = i 
    else: 
     pass 

wb.save('filename.xlsx') 

Но по какой-то причине он пишет в пустые ячейки и переписывает клетки, которые имели значение, записанное в них.

Я прокомментирую цикл, который я нахожу, что если я запустил код, он стирает все, что было вручную записано в электронную таблицу для начала. Может быть, это часть проблемы?

Также я использую LibreOffice, если это делает разницу

+0

Вторая часть вашего если заявление всегда будет оценивать 'true' поэтому вы перезаписать существующие клетки. –

ответ

3

Что Чарли упоминает, конечно, правильный.

Non пустые строки в Python для оценки True, так что вы на самом деле тестирования, если значение ячейки не является None или bool('None'), а позже всегда True, следовательно, ваше состояние всегда имеет значение True.

Чтобы ответить на ваш конкретный случай, я не уверен, почему вы пытаетесь проверить пустую ячейку с 'None'.

В случае, если вы действительно хотите сделать это ваше состояние должно выглядеть следующим образом:

if sheet.cell(row=i, column=1).value in [None,'None'] 

Если вы хотите тест на None или пустой строкой, так None or '' то, конечно, ваше состояние должно быть:

if sheet.cell(row=i, column=1).value in [None,''] 

Надежда это получает вас на правильном пути ..

+0

Спасибо, помощник. Оно работало завораживающе. –

Смежные вопросы