我正在从一个工作簿的列中提取数据,需要将数据复制到另一现有工作簿中。
这是我提取数据的方式(工作正常):
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']
但是我在概念上在这里缺失了一块。我无法连接点。有人可以建议我如何将这些数据从源工作簿获取到新的目标工作簿?
答案 0 :(得分:1)
让我们说您要复制从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')
答案 1 :(得分:0)
我最终得到了将列表写到另一个现有电子表格中的信息:
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,因此我不会覆盖output.xlsx中的前16个现有标头行。任何想法表示赞赏。
答案 2 :(得分:0)
我想出了一种更简洁的方法,将源数据写到不同工作簿中目标表上的不同起始行。我不需要像上面那样将值转储到列表中。 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')