【发布时间】:2022-11-20 09:03:09
【问题描述】:
我正在尝试根据一张纸上的 Column ['A'] 单元格值按行复制数据,然后粘贴到另一张纸的 row2 中。工作表中的粘贴是现有工作表,工作表的第 1 行是我的标题行,所以我想从第 2 行开始粘贴复制的数据。我不想追加,因为我在工作表中的粘贴中有现有的公式列将被覆盖,而且追加我会丢失格式。所以说我的工作表副本的 A 列是 States,我想复制 Column ['A'] cell.value 是 'Georgia' 的所有行并粘贴到 sheet2 的 row2,复制 Column ['A'] 单元格所在的行。 value = Texas 并粘贴到工作表 3 的第 2 行等(将每个州粘贴到不同的工作表中)。我能够复制数据并粘贴,但我无法将其粘贴到第 2 行中,它正在粘贴数据在我的工作表副本中的任何行中。因此,如果 Texas 从第 3000 行开始,我的代码将从工作表副本的第 3000 行复制并粘贴到工作表 2 的第 3000 行,这意味着我的工作表 2 的第 1-2999 行都是空行, 从文件复制如下:
import openpyxl
from openpyxl import load_workbook
from openpyxl import Workbook
from openpyxl.utils import range_boundaries
from sys import argv
script, inpath, outpath = argv
# load copy from file
wb_cpy = load_workbook(r'C:\Users\me\documents\sourcefolder\copyfromfile.xlsx')
ws = wb_src["sheet1"]
# load paste in file
wb_pst = load_workbook(r'C:\Users\me\documents\sourcefolder\pasteinfile.xlsx')
ws2 = wb_dst["sheet2"]
for row in ws.iter_rows(min_col=1, max_col=1, min_row=9):
for row2 in ws2.iter_rows(min_col=1, max_col=1, min_row=2):
for cell in row:
for cell2 in row2:
if cell.value == "GEORGIA":
ws2.cell(row=cell.row, column=1).value = ws.cell(row=cell.row, column=1).value
ws2.cell(row=cell.row, column=2).value = ws.cell(row=cell.row, column=2).value
ws2.cell(row=cell.row, column=6).value = ws.cell(row=cell.row, column=6).value
wb_pst.save(r'C:\Users\me\documents\sourcefolder\pasteinfile.xlsx')
#ps: i will repeat the script for each state
我可能完全错了,但我尝试了多种其他方法但没有成功,我无法将复制的数据粘贴到工作表中粘贴的第 2 行
【问题讨论】:
-
根据你的解释,我猜 image2 是“pasteinfile.xlsx”,它由许多重复的工作表组成,你想从示例数据中复制每个州的数据,(我假设的 image1 是“copyfromfile.xlsx”)到连续工作表中的“pasteinfile.xlsx”。即对于您的示例数据: 格鲁吉亚范围是 A2:F7在“copyfromfile.xlsx”中,因此此范围将被复制到“pasteinfile.xlsx”第一张纸上的 A2:F7。阿拉巴马州范围 A8:F12, 将被复制到第二张纸上的 A2:F6 范围,而 *TEXAS 范围 A13:F21, 将被复制到第三张纸上的 A2:F10 范围内。