openpyxl
似乎是使用Python读取Excel文件的好方法,但我一直遇到问题。我需要检测一个单元格是否为空,但似乎无法比较任何单元格属性。我尝试将其转换为字符串并使用""
,但这没有用。为空时的单元格类型是None
,或者NoneType
但我不知道如何将对象与之进行比较。
建议?我知道openpyxl
正在开发中,但也许这更像是一个一般的Python问题。
openpyxl
似乎是使用Python读取Excel文件的好方法,但我一直遇到问题。我需要检测一个单元格是否为空,但似乎无法比较任何单元格属性。我尝试将其转换为字符串并使用""
,但这没有用。为空时的单元格类型是None
,或者NoneType
但我不知道如何将对象与之进行比较。
建议?我知道openpyxl
正在开发中,但也许这更像是一个一般的Python问题。
要在单元格不为空时执行某些操作,请添加:
if cell.value:
这在 python 中与如果单元格值不是 None 相同(即:如果不是 cell.value == None :)
请注意避免检查您可以使用的空单元格
worksheet.get_highest_row()
和
worksheet.get_highest_column()
此外,如果您想将单元格的内容用作字符串而不考虑可以使用的类型,我还发现它很有用(尽管可能不是一个好的解决方案):
unicode(cell.value)
这对我有用。
if cell.value is None:
print("Blank")
else:
print("Not Blank")
这
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
and的问题ws.max_row
是它也会计算空白列,从而达到目的。
您可以更改要验证的单元格或单元格也可以编码,例如:
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")