2017-08-28 1 views
1

Ich habe Daten in einer Excel-Datei, aber damit es nützlich ist, muss ich kopieren & fügen Sie die Spalten in eine andere Reihenfolge. Ich habe herausgefunden, wie zu öffnen & meine Datei lesen und eine neue Excel-Datei schreiben. Ich kann auch die Daten vom Original erhalten und sie in meine neue Datei einfügen, aber nicht in einer Schleife.Kopieren und Neuanordnen von Spalten in Excel mit Openpyxl

here's an example of the data i'm working with to visualize my issue ich brauche A1, B1, C1 nebeneinander und dann A2, B2, C2, etc etc.

Hier ist mein Code aus einer kleineren Testdatei Ich habe zu spielen, um mit:

import openpyxl as op 

wb = op.load_workbook('coding_test.xlsx') 
ws = wb.active 

mylist = [] 
mylist2 = [] 
mylist3 = [] 


for row in ws.iter_rows('H13:H23'): 
    for cell in row: 
     mylist.append(cell.value) 
for row in ws.iter_rows('L13:L23'): 
    for cell in row: 
     mylist2.append(cell.value) 
for row in ws.iter_rows('P13:P23'): 
    for cell in row: 
     mylist3.append(cell.value) 

print (mylist, mylist2, mylist3) 


new_wb = op.Workbook() 
dest_filename = 'empty_coding_test.xlsx' 
new_ws = new_wb.active 

for row in zip (mylist, mylist2, mylist3): 
    new_ws.append(row) 

new_wb.save(filename=dest_filename) 

Ich möchte eine Schleife erstellen, um den Rest der Arbeit zu tun, aber ich kann nicht herausfinden, wie es zu entwerfen, so dass ich nicht für jede Spalte und Satz codieren muss.

+0

haben Sie zum Beispiel verschieben möchten von H13: H23 bis I13: 123? –

+0

@MauricioCortazar nein, ich möchte die Spalte H13: H23 als Spalte A in der neuen Datei schreiben und dann L13: L23 Spalte B in der neuen Datei haben. Ich möchte nur, dass sie nebeneinander angeordnet sind. –

+0

Verwenden Sie 'zip' und' iter_rows() ' –

Antwort

-1

gut, Sie können Code recyceln tun so etwas wie:

import openpyxl as op 

wb = op.load_workbook('coding_test.xlsx') 
ws = wb.active 

new_wb = op.Workbook() 
dest_filename = 'empty_coding_test.xlsx' 
new_ws = new_wb.active 

for row in ws.iter_rows('H13:H23'): 
    for cell in row: 
     new_ws['A%s' % cell].value = cell.value 
for row in ws.iter_rows('L13:L23'): 
    for cell in row: 
     new_ws['B%s' % cell].value = cell.value 
for row in ws.iter_rows('P13:P23'): 
    for cell in row: 
     new_ws['C%s' % cell].value = cell.value 


new_wb.save(filename=dest_filename) 

mir sagen, ob die Arbeit für Sie

Verwandte Themen