使用OpenPyXl检查空单元格
我倒了很多版本的这个相同的问题,但根本找不到一个工作的解决scheme循环通过一组单元格和检查空的。
这是我的代码:
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中的非空string评估为True
,因此实际上testing的单元格值是None还是bool('None')
,而后者总是True
,因此您的条件总是计算为True
。
为了解决你的具体情况,我不知道你为什么试图用'None'
来testing一个空单元格。
如果你真的想这样做,你的情况应该是这样的:
if sheet.cell(row=i, column=1).value in [None,'None']
如果你想testingNone或空string,那么None or ''
那么当然你的条件应该是:
if sheet.cell(row=i, column=1).value in [None,'']
希望这能让你走上正轨。