使用 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')

我最终将此列表写入另一个 pre-existing 电子表格:

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

效果很好,但现在我需要确定如何将数据写入 output.xlsx,从第 16 行开始而不是第 1 行,这样我就不会覆盖 header 中现有的前 16 行 output.xlsx。任何想法表示赞赏。

我想出了一种更简洁的方法来将源数据写入不同工作簿中目标 sheet 的不同起始行。我不需要像上面那样将值转储到列表中。 iter_rows 完成所有工作,openpyxl 很好地将其传递给不同的工作簿并工作sheet:

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')