openpyxl: Append Daten in erste leere Spalte Zelle
Hintergrund:
Ich habe eine excel-Arbeitsmappe enthält Metadaten, die verteilt auf die verschiedenen Arbeitsblätter. Ich brauche, um die entsprechenden Spalten von Daten aus verschiedenen Arbeitsblättern und kombinieren Sie zu einem einzigen Arbeitsblatt. Mit dem folgenden code, den ich in der Lage gewesen, um ein neues Arbeitsblatt erstellen und Daten hinzufügen.
# Open workbook and assign worksheet
try:
wb = openpyxl.load_workbook(metadata)
shtEditionLNM = wb.worksheets[0] # Edition date & latest NM
shtChartsTitles = wb.worksheets[1] # Charts & Titles
shtDepthHeight = wb.worksheets[4] # Depth & heights
shtChartProj = wb.worksheets[7] # Chart Projection
except:
raise SystemExit(0)
new = wb.create_sheet()
new.title = "MT_CHARTS INFO"
new.sheet_properties.tabColor = "1072BA"
shtMeta = wb.get_sheet_by_name("MT_CHARTS INFO")
for row in shtChartsTitles.rows:
shtMeta.append([row[0].value, row[1].value, row[2].value, row[4].value])
for row in shtEditionLNM.rows:
shtMeta.append([row[3].value, row[4].value])
wb.save('OW - Quarterly Extract of Metadata for Raster Charts Dec 2015.xlsx')
Diese funktioniert ohne Fehler und ich kann sehen, dass die gespeicherten Daten auf meine neue Arbeitsmappe. Jedoch wenn ich eine zweite Schleife und append-Werte, Sie sind Bestandteil der Zelle A3169 in der Erwägung, dass ich möchte, dass Sie zum Auffüllen von E1.
Meine Frage läuft darauf hinaus, " gibt es eine Möglichkeit, kann ich Anhängen, um eine neue Spalte statt in eine neue Zeile?'
Vielen Dank im Voraus!
InformationsquelleAutor lamb | 2016-04-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht direkt:
ws.append()
arbeiten mit Zeilen, denn dies ist die Art, wie die Daten gespeichert werden und somit am einfachsten zu optimieren, für die nur-Lesen und nur-schreiben-Modus.Jedoch
ws.cell(row=x, column=y, value=z)
wird Ihnen erlauben, zu tun, was du willst. Version 2.4 (Installation von einer Kasse) wird auch lassen Sie Sie arbeiten direkt mit Spalten, die durch die Verwaltung der Zuordnung zu den Zellen für Sie:ws['E']
zurückkehren wird, ein Tupel von Zellen in der Spalte bis zu den aktuellenws.max_row
;ws.iter_cols(min_col, min_row, max_col, max_row)
zurückkehren wird ein generator von Spalten so groß, wie Sie es brauchen.InformationsquelleAutor Charlie Clark
Danke Charlie,
Ihre Antwort gab mir die Richtung, die ich brauchte, um dies getan. Bezugnehmend auf diese Frage:
gewusst wie: schreiben einer neuen Zelle in python mit openpyxl
ich habe herausgefunden, es gibt viele Möglichkeiten, um Haut diese Katze - die Methode, die unten ist, was ich ging in die Ende!
.cell(coordinate=…)
für alles, so das ist jetzt veraltet.danke, war nicht bewusst. Ich habe nun die Methode, die Sie vorgeschlagen und können sehen, dass ich, sollte der verwendet dies in Erster Linie zu vermeiden string-Formatierung! Ist es großartig. P. S ich habe gerade realisiert, Sie pflegen openpyxl so möchte ich Ihnen danken, denn es ist schon eine riesige Hilfe in meiner Rolle, hast du das plugin eine Spendenseite?
Froh, dass Sie es nützlich finden. Haben wir nicht eine bestimmte Spende Seite aber akzeptieren Sie bereitwillig. Am besten schreiben Sie mir eine e-mail für details.
InformationsquelleAutor lamb