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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
iter_rows()
, hat wahrscheinlich einen ähnlichen Sinn:Können Sie ändern es ein wenig nachgeben wird eine Liste von Reihe-Werten, zum Beispiel:
Demo:
yield
die Liste nicht geben mir das gleiche Ergebnis wie Ihre Lösunginternal_value
stattvalue
. Denn AFK zu, lasst uns morgen weitermachen.Ich es geschafft habe mit dieser Methode:
Im wesentlichen habe ich eine Liste für alle Daten.
Dann habe ich Durchlaufen jede Zeile im Arbeitsblatt.
Jeder
cell.value
innerhalb einer Zeile wurde Hinzugefügt, um eine short-term-Liste (aktuelle Zeile).Sobald alle
cell.values
innerhalb der Zeile Hinzugefügt werden, um das Kurzfristige Liste, die Kurzfristige Liste Hinzugefügt wird, um die langfristige Liste.