使用 OpenPyXl 检查空单元格
Checking for empty cells with 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
查理说的当然是对的。
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,'']
希望这能让你走上正轨..
对于同一个问题,我已经研究了很多版本,但就是找不到一个可行的解决方案来遍历一组单元格并检查是否有空单元格。
这是我的代码:
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 or ''
那么你的条件当然应该是:
if sheet.cell(row=i, column=1).value in [None,'']
希望这能让你走上正轨..