openpyxl
semble être une excellente méthode pour utiliser Python pour lire les fichiers Excel, mais j'ai rencontré un problème constant. J'ai besoin de détecter si une cellule est vide ou non, mais je n'arrive pas à comparer les propriétés de la cellule. J'ai essayé de caster une chaîne et d'utiliser ""
mais cela n'a pas fonctionné. Le type de cellule lorsqu'elle est vide est None
, ou NoneType
mais je ne peux pas comprendre comment comparer un objet à cela.
Suggestions? Je comprends que openpyxl
est en cours de développement, mais c'est peut-être plus un problème général Python.
Pour faire quelque chose lorsque la cellule n'est pas vide, ajoutez:
if cell.value:
qui en python est le même que si la valeur de la cellule n'est pas None (c'est-à-dire: si ce n'est pas cell.value == None :)
Remarque pour éviter de vérifier les cellules vides que vous pouvez utiliser
worksheet.get_highest_row()
et
worksheet.get_highest_column()
Je l'ai également trouvé utile (bien que ce ne soit peut-être pas une bonne solution) si vous souhaitez utiliser le contenu de la cellule sous forme de chaîne, quel que soit le type que vous pouvez utiliser:
unicode(cell.value)
Cela a fonctionné pour moi.
if cell.value is None:
print("Blank")
else:
print("Not Blank")
Le
if cell.value is None:
est la meilleure option à utiliser pour ce cas.
si vous souhaitez l'utiliser dans une itération, vous pouvez l'utiliser comme ceci:
ws=wb.active
names=ws['C']
for x in names:
if x.value is None:
break
print(x.value)
Le problème avec ws.max_column
et ws.max_row
signifie qu'il comptera également les colonnes vides, ce qui ira à l'encontre de l'objectif.