Anzeigen Zeile Werte in openpyxl

In der csv-Modul in python, gibt es eine Funktion namens csv.reader die eine Iteration über eine Zeile, gibt eine reader-Objekt und gehalten werden können in einem container wie eine Liste.

So, wenn die Liste einer Variablen zugewiesen und gedruckt, dh:

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

So weit, dass ich nicht sehen, eine ähnliche Funktion, wie dies in der openpyxl. Ich könnte falsch sein so Frage ich mich, ob einer von Euch kann mir helfen.

Update

@alecxe, deine Lösung funktioniert perfekt (außer seinem casting mein Geburtsdatum als datetime-format anstatt des normalen string).

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']]

Da ich bin ein Anfänger ich wollte mal wissen wie das funktionieren würde wenn ich eine for-Schleife statt einer Liste erfassen.

So habe ich diese:

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

Es fast gibt mir genau die gleiche Ausgabe, sondern es gibt mir das:
Wie können Sie sagen, es ist im wesentlichen gibt mir eine riesige Liste statt verschachtelte Liste in das Ergebnis, das Sie mir gab.

>>>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']]
  • Wenn etwas funktioniert mit einer Liste Verständnis, dann wird es auch mit einer Liste. Der Unterschied zwischen den beiden ist, dass die list comprehension erstellt eine Liste für jede Zeile im Arbeitsblatt. Wenn Sie dies tun wollen, in Ihre Lösung, die Sie brauchen, um eine neue Liste erstellen, für jede Zeile und fügen Sie diese zu führen. Es gibt keinen Grund, jedoch nicht auf die Verwendung einer Liste mit Verständnis zu tun.
InformationsquelleAutor dyao | 2015-07-06
Schreibe einen Kommentar