我已经倾倒了同一个问题的许多版本,但根本找不到一个工作解决方案来循环遍历一组单元格并检查空单元格。
这是我的代码:
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 :(得分:3)
查理提到的当然是正确的。
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,'']
希望这能让你走上正轨......