2017-08-28 49 views
1

我有一個excel文件中的數據,但它是有用的我需要複製&將列粘貼到不同的順序。 我已經想通了如何打開&讀取我的文件並寫入一個新的excel文件。我也可以從原始數據中獲取數據,並將其粘貼到我的新文件中,但不能在循環中進行。複製和重新排列excel中的列與Openpyxl

here's an example of the data i'm working with to visualize my issue我需要A1,B1,C1彼此相鄰,然後A2,B2,C2,等等等等

下面是從我創建玩弄較小測試文件我的代碼:

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) 

我想創建一個循環來完成其餘的工作,但我無法弄清楚如何設計它,以便我不必爲每個列進行編碼和設置。

+0

的工作你想例如,從H13移動:H23至I13:123? –

+0

@MauricioCortazar不,我想在新文件中寫入列H13:H23作爲列A,然後在新文件中使用L13:L23作爲列B.我只是希望他們排列在一起。 –

+0

使用'zip'和'iter_rows()' –

回答

-1

好,可以回收的代碼做這樣的事情:

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) 

告訴我,如果你