Python 使用OpenPyXl检查空单元格
我已经讨论了同一个问题的许多版本,但是根本找不到一个有效的解决方案来循环通过一组单元格并检查是否有空的单元格 这是我的密码:Python 使用OpenPyXl检查空单元格,python,excel,python-3.x,xlsx,openpyxl,Python,Excel,Python 3.x,Xlsx,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' + s
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,查理提到的当然是正确的 Python中的非空字符串的计算结果为
True
,因此您实际上正在测试单元格值是否为None或bool('None')
,后者始终为True
,因此您的条件的计算结果始终为True
为了解决您的具体情况,我不确定您为什么要尝试使用'None'
测试空单元格
如果你真的想这样做,你的情况应该是这样的:
if sheet.cell(row=i, column=1).value in [None,'None']
如果您想要测试None或空字符串,那么None或'
当然您的条件应该是:
if sheet.cell(row=i, column=1).value in [None,'']
希望这能让您走上正轨。if语句的第二部分将始终计算为
True
,这就是覆盖现有单元格的原因。