的原因是因为在复制范围时,会改变工作表的结构,导致循环的条件不再满足,从而跳出循环。
解决这个问题的方法是使用一个临时变量来保存循环的范围,然后在循环中复制范围到目标位置。以下是一个示例代码:
import openpyxl
# 打开工作簿
workbook = openpyxl.load_workbook('example.xlsx')
sheet = workbook.active
# 定义范围的起始和结束位置
start_row = 1
end_row = 10
start_col = 1
end_col = 5
# 创建一个临时变量来保存复制的范围
temp_range = []
# 复制范围到临时变量
for row in range(start_row, end_row+1):
temp_row = []
for col in range(start_col, end_col+1):
temp_row.append(sheet.cell(row=row, column=col).value)
temp_range.append(temp_row)
# 将临时变量中的范围复制到目标位置
for i, row in enumerate(temp_range):
for j, value in enumerate(row):
sheet.cell(row=start_row+i, column=start_col+j).value = value
# 保存工作簿
workbook.save('example.xlsx')
在这个示例中,我们首先定义了要复制的范围的起始和结束位置。然后,我们使用一个临时变量temp_range
来保存复制的范围。接下来,我们使用两个嵌套的循环将范围中的值复制到临时变量中。最后,我们再次使用两个嵌套的循环将临时变量中的值复制到目标位置。
这样,即使在同一工作表中复制范围时,For循环也能够继续执行,完成复制操作。
领取专属 10元无门槛券
手把手带您无忧上云