Afficher les valeurs de ligne de openpyxl

Dans le csv module en python, il existe une fonction appelée csv.reader qui permet d'itérer sur une ligne, retourne un objet de lecteur et ne peut être conservée dans un récipient comme une liste.

Ainsi, lorsque la liste affectée à une variable et est imprimé, c'est à dire:

csv_rows = list(csv.reader(csvfile, delimiter=',', quotechar='|'))
print (csv_rows)
>
>
>
[['First Name', 'Last Name', 'Zodicac', 'Date of birth', 'Sex'] # I gave an example of the function outputting a header row

Jusqu'à présent, je ne vois pas une fonction similaire de ce genre dans la openpyxl. J'ai peut être confondu avec alors je me demandais si l'un de vous peut m'aider.

Mise à jour

@alecxe, votre solution fonctionne parfaitement (à l'exception de son casting ma date de naissance comme un format datetime au lieu d'un régulier de la chaîne).

def iter_rows(ws):
for row in ws.iter_rows():
    yield [cell.value for cell in row]
>
>
>>> pprint(list(iter_rows(ws)))
[['First Nam', 'Last Name', 'Zodicac', 'Date of birth', 'Sex'], ['John', 'Smith', 'Snake', datetime.datetime(1989, 9, 4, 0, 0), 'M']]

Depuis que je suis un débutant, je voulais savoir comment cela fonctionnerait si j'ai utilisé une boucle for au lieu d'une compréhension de liste.

J'ai donc utilisé ce:

def iter_rows(ws):
result=[]
for row in ws.iter_rows()
    for cell in row:
        result.append(cell.value)
yield result

Il presque me donne exactement la même sortie, au lieu qu'il me donne ceci:
Comme vous pouvez le dire, pour l'essentiel, donne-moi une gigantesque liste au lieu de la liste imbriquée dans le résultat que vous m'avez donné.

>>>print(list(iter_rows(ws)))

[['First Nam', 'Last Name', 'Zodicac', 'Date of birth', 'Sex', 'David', 'Yao', 'Snake', datetime.datetime(1989, 9, 4, 0, 0), 'M']]
Si quelque chose fonctionne avec une compréhension de liste, puis il travaillera aussi avec une liste. La différence entre les deux est que la compréhension de liste permet de créer une liste pour chaque ligne de la feuille de calcul. Si vous voulez faire dans votre solution, vous aurez besoin de créer une nouvelle liste pour chaque ligne et de les ajouter à ce résultat. Il n'y a pas de raison, cependant, de ne pas utiliser une liste de compréhension pour ce faire.

OriginalL'auteur dyao | 2015-07-06