如何使用 openpyxl 库使用 python 将列从一个 Excel 工作表复制到另一个 Excel 工作表?

时间:2021-01-13 16:33:49

标签: python openpyxl

我是编程新手。我试图将列从一个 Excel 工作表复制到另一个,但我的代码有问题,因为只有最后一列数据被复制到目标文件。我附上了代码和我不断得到的结果。

Jan_2020 ="C:\\Users\\yaxee\\OneDrive\\Desktop\\NBET 
Extraction data\\JANUARY 2020.xlsx"
wb1 = xl.load_workbook(Jan_2020)
ws1 = wb1.worksheets[0]

Extraction_WB ="C:\\Users\\yaxee\\OneDrive\\Desktop\\ExtractionWB.xlsx"
wb2 = xl.load_workbook(Extraction_WB)
ws2 = wb2.worksheets[0]

#copy from wb1
for i in range(4, 34):
    c = ws1.cell(row = i, column = 4)
#paste in ws2
for j in range(3, 33):
    ws2.cell(row = j, column = 4).value = c.value
wb2.save(str(Extraction_WB))

源表: Source sheet

目的地表: enter image description here

2 个答案:

答案 0 :(得分:0)

如果我理解您的需要,您需要将第二个循环放在第一个循环中以复制整个行范围。这行得通吗?克尔。

#copy from wb1
for i in range(4, 34):
    c = ws1.cell(row = i, column = 4)
    #paste in ws2
    for j in range(3, 33):
        ws2.cell(row = j, column = 4).value = c.value
wb2.save(str(Extraction_WB))

答案 1 :(得分:0)

你不需要两个循环。您只是不断地覆盖 c 的值,直到它具有列的最后一个值。

然后,您只需将该值写入第二个工作表的所有行。

相反,使用一个循环,从当前行读取单个值,并将其写入第二张表中的相应行:

for row in range(4, 34):
    #copy from wb1
    c = ws1.cell(row=row, column=4)
    #paste in ws2
    ws2.cell(row=row-1, column=4, value=c.value)

如果你在工作表之间有一些通用的转换,一个更通用的方法如下:

step = 2
read_start_row = 4
write_start_row = 3
amount_of_rows = 30

for i in range(0, amount_of_rows, step):
    #copy from wb1
    c = ws1.cell(row=read_start_row+i, column=4)
    #paste in ws2
    ws2.cell(row=write_start_row+(i/step), column=4, value=c.value)
相关问题