Openpyxl 检查空单元格

问题描述 投票:0回答:5

openpyxl
似乎是使用 Python 读取 Excel 文件的好方法,但我遇到了一个持续的问题。我需要检测单元格是否为空,但似乎无法比较任何单元格属性。我尝试将其转换为字符串并使用
""
但这不起作用。空时的单元格类型是
None
NoneType
但我不知道如何将对象与其进行比较。

建议?我知道

openpyxl
正在开发中,但也许这是一个更普遍的 Python 问题。

python object comparison openpyxl
5个回答
31
投票

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

if cell.value:

在Python中与单元格值不为None相同(即:如果不是cell.value == None:)

注意避免检查可以使用的空单元格

worksheet.get_highest_row()

worksheet.get_highest_column()

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

unicode(cell.value)

21
投票

这对我有用。

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

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_column
ws.max_row
的问题是它也会计算空白列,从而达不到目的。


0
投票

在我的例子中,修复方法是与 None as String 进行比较

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

-1
投票

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

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")
© www.soinside.com 2019 - 2024. All rights reserved.