首页 > 解决方案 > 如何根据值粘贴到单元格中 - Openpyxl

问题描述

大家早上好。

我的情况是我有两个 Excel 工作簿。第一个有我的源数据,第二个我试图将源数据粘贴到其中。

我的代码在第一个工作簿中搜索具有今天日期的特定单元格,找到我需要与之关联的数据单元格,然后尝试将该范围的数据粘贴到第二个工作簿中。

该代码目前能够遍历第一个工作簿并找到正确的数据,但是当我尝试将数据粘贴到第二个工作簿时出现问题。

例如,如果找到的数据来自 A40:C40,它将粘贴到第二个工作簿的同一位置 (A40:C40)。我需要代码来迭代第二个工作簿并根据另一个单元格值找到正确的位置来粘贴数据。

需要明确的是,复制和粘贴的位置每天都在变化。我不能使用固定的单元格引用。

from openpyxl import Workbook
import openpyxl
import datetime

wb = openpyxl.load_workbook('Online Log.xlsx')
wb1 = openpyxl.load_workbook('Blank.xlsx')

sheet = wb['Weather']
sheet1 = wb1['Sheet2']

# Find yesterday in date format
today = datetime.date.today()
yesterday = str(today - datetime.timedelta(days=1))

# Find position of midnight position on today's DPR
for row in sheet.iter_rows():
    for cell in row:
        if str(cell.value) == (str(today) + ' 00:00:00'):
           Start_Coord = sheet.cell(row=cell.row, column=3).coordinate
            End_Coord = sheet.cell(row=cell.row + 3, column=9).coordinate
            for row in sheet[Start_Coord:End_Coord]:
                for cell in row:
                    sheet1[cell.coordinate].value = cell.value

wb1.save('file2.xlsx')

我尝试合并以下代码来搜索要粘贴到第二个工作簿的相关位置,但这也不起作用。

for rows in sheet1.iter_rows():
    for cell in rows:
        if str(cell.value) == 'Paste Cell Below':
            Start_Coord_2 = sheet1.cell(row=cell.row, column=3).coordinate
            End_Coord_2 = sheet1.cell(row=cell.row + 3, column=9).coordinate
            for rows in sheet1[Start_Coord_2:End_Coord_2]:
                 for cell in rows:
                    sheet1[cell.coordinate].value = cell.value
                    print(cell.coordinate)

标签: pythonexcelopenpyxl

解决方案


推荐阅读