Openpyxl: Wie kopieren Sie eine Zeile nach der überprüfung, ob eine Zelle bestimmten Wert enthält
Ich habe ein Arbeitsblatt, das jede Woche aktualisiert mit tausenden von Zeilen und würde übertragen müssen Zeilen aus diesem Arbeitsblatt nach der Filterung. Ich bin mit dem aktuellen code zu finden, der Zellen die den Wert ich brauche, und übertragen Sie dann die gesamte Zeile auf ein anderes Blatt, aber nach dem speichern der Datei, bekomme ich die "IndexError: list index out of range" exception.
Den code, den ich verwenden, ist wie folgt:
import openpyxl
wb1 = openpyxl.load_workbook('file1.xlsx')
wb2 = openpyxl.load_workbook('file2.xlsx')
ws1 = wb1.active
ws2 = wb2.active
for row in ws1.iter_rows():
for cell in row:
if cell.value == 'TrueValue':
n = 'A' + str(cell.row) + ':' + ('GH' + str(cell.row))
for row2 in ws1.iter_rows(n):
ws2.append(row2)
wb2.save("file2.xlsx")
Den ursprünglichen code, den ich verwendet, verwendet, um die Arbeit ist unten und muss geändert werden, wegen der großen Dateien, die bewirkt, dass MS Excel nicht zu öffnen (über 40mb).
n = 'A3' + ':' + ('GH'+ str(ws1.max_row))
for row in ws1.iter_rows(n):
ws2.append(row)
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwendung einer Liste zum speichern der Elemente in jeder Spalte für die jeweilige Zeile.
Dann fügen Sie die Liste, um Ihre ws2.
Ich bin mir nicht ganz sicher, was Sie zu tun versuchen, aber ich vermute, das problem ist, dass Sie geschachtelt haben Ihr Exemplar Schleife.
Versuchen Sie Folgendes:
max_col=190
stattmax_col=ws1.max_col
?GH == 190
Den folgenden tun, was Sie wollen, zum Beispiel:
Getestet mit Python: 3.4.2 - openpyxl: 2.4.1 - LibreOffice: 4.3.3.2
m.groups()
. Bearbeiten Ihre Frage und zeigen Sie Ihren code, was istm
und warum verwenden Sie.groups()
.War ich in der Lage, dies zu lösen, mit Listen für mein Projekt.
Getestet mit: Python 3.7 openpyxl 2.5.4