Openpyxl 检查空单元格

Openpyxl check for empty cell

提问人:MechEngineer 提问时间:10/27/2011 最后编辑:MikkuMechEngineer 更新时间:11/13/2023 访问量:120464

问:

openpyxl似乎是使用 Python 读取 Excel 文件的好方法,但我遇到了一个不断的问题。我需要检测单元格是否为空,但似乎无法比较任何单元格属性。我尝试将转换为字符串并使用,但没有用。当它为空时,单元格的类型是 ,或者,但我无法弄清楚如何将对象与它进行比较。""NoneNoneType

建议?我知道正在开发中,但也许这更像是一个通用的 Python 问题。openpyxl

Python 对象 比较 OpenPyXL

评论

8赞 MechEngineer 10/27/2011
再一次,再多搜索一下就得出了答案:使用if cell.value is None

答:

31赞 Aron Kisdi 12/7/2011 #1

要在单元格不为空时执行某些操作,请添加:

if cell.value:

在 python 中,这与单元格值不是 None 相同(即:if not cell.value == None:)

注意:避免选中可以使用的空单元格

worksheet.get_highest_row()

worksheet.get_highest_column()

此外,我发现它很有用(尽管可能不是一个好的解决方案),如果您想将单元格的内容用作字符串,而不管您可以使用哪种类型:

unicode(cell.value)

评论

21赞 Mark Mikofski 2/21/2015
小心! 如果bool(cell.values) == Falsecell.value = 0
6赞 Shoham 9/17/2017
在最新的 openpyxl 中,它删除了 get_highest_row 和 get_highest_column 方法。它们已被max_row和max_column财产所取代
9赞 alexis 3/23/2018
这个答案是不正确的。以这种方式检查会将零视为空单元格。
21赞 Mikku 12/27/2015 #2

这对我有用。

if cell.value is None:
    print("Blank")
else:
    print("Not Blank")

评论

0赞 Cmag 2/3/2020
你们知道有没有命令行快捷方式可以用“”替换空白单元格?谢谢!
1赞 Heinz 5/16/2020
我有一个工作表,其中单元格看起来是空白的,两者都给出 True,但什么也没给出,并且给出 0,完全令人困惑bool(not cell.value is None)bool(not cell.value == None)print(cell.value)print(len(cell.value))
-1赞 Felipe R Valera 9/9/2016 #3

您可以更改要验证的一个或多个单元格 您还可以编写代码,例如:

import openpyxl

wb = openpyxl.load_workbook("file.xlsx")
sheet = wb.get_sheet_by_name('Sheet1')

if sheet.cell(row = 1, column=7).value == None:
    print("Blank") 
else:
    print("No blank")
4赞 Bhaskar 5/19/2018 #4

if cell.value is None:

是用于这种情况的最佳选择。

如果你想在迭代中使用它,你可以像这样使用它:

ws=wb.active
names=ws['C']
for x in names:
    if x.value is None:
        break
    print(x.value)

和 的问题在于它也会计算空白列,从而破坏了目的。ws.max_columnws.max_row

0赞 V4ld3rr4m4 11/9/2023 #5

就我而言,修复程序是与 None 作为字符串进行比较

if cell(row,col).value == "None":
    print(" Ignore cell ... ")