web-dev-qa-db-fra.com

Openpyxl recherche une cellule vide

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.

18
MechEngineer

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)
23
Aron Kisdi

Cela a fonctionné pour moi.

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

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.

1
bhaskar