簡體   English   中英

使用openpyxl將單元格值列從一個工作簿復制到另一個工作簿

[英]Copy column of cell values from one workbook to another with openpyxl

我正在從一個工作簿的列中提取數據,並且需要將數據復制到另一個現有工作簿。

這就是我提取數據的方式(工作正常):

wb2 = load_workbook('C:\\folder\\AllSitesOpen2.xlsx')
ws2 = wb2['report1570826222449']
#Extract column A from Open Sites
DateColumnA = []
for row in ws2.iter_rows(min_row=16, max_row=None, min_col=1, max_col=1):
    for cell in row:
        DateColumnA.append(cell.value)
DateColumnA

以上代碼成功將第一列每一行的單元格值輸出到DateColumnA

我想將存儲在 DateColumnA 中的值粘貼到這個現有的目標工作簿中:

#file to be pasted into
wb3 = load_workbook('C:\\folder\\output.xlsx')
ws3 = wb3['Sheet1']

但我在這里在概念上遺漏了一塊。 我無法連接點。 有人可以建議我如何將這些數據從我的源工作簿獲取到新的目標工作簿嗎?

假設您要復制從 wb3 中“Sheet1”的單元格“A1”開始的列:

wb3 = load_workbook('C:\\folder\\output.xlsx')
ws3 = wb3['Sheet1']

for counter in range(len(DateColumnA)):
    cell_id = 'A' + str(counter + 1)
    ws3[cell_id] = DateColumnA[counter]

wb3.save('C:\\folder\\output.xlsx')

我最終得到這個將列表寫入另一個預先存在的電子表格:

for x, rows in enumerate(DateColumnA):
    ws3.cell(row=x+1, column=1).value = rows
    #print(rows)
    wb3.save('C:\\folder\\output.xlsx')

效果很好,但現在我需要確定如何從第 16 行而不是第 1 行開始將數據寫入 output.xlsx,因此我不會覆蓋 Z78E6221F6393D13656 中的前 16 個現有 header 行。 任何想法表示贊賞。

我想出了一種更簡潔的方法來將源數據寫入不同工作簿中目標工作表上的不同起始行。 我不需要像上面那樣將值轉儲到列表中。 iter_rows 完成所有工作,openpyxl 很好地將其傳遞給不同的工作簿和工作表:

row_offset=5
for rows in ws2.iter_rows(min_row=2, max_row=None, min_col=1, max_col=1):
        for cell in rows:
            ws3.cell(row=cell.row + row_offset, column=1, value=cell.value)
            wb3.save('C:\\folder\\DestFile.xlsx')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM