我试图将数据从多个工作表导入excel中的另一个工作表,为了做到这一点,我需要python将数据输入到第一个空单元格中,而不是覆盖最后一个文件的数据。这似乎几乎是可行的,但是,每一列都会跳转到它自己的空行,而不是和其他匹配数据一起留在正确的行中,这就形成了一个楼梯式的模式。
这是我的代码
import os
import openpyxl
os.chdir('C:\\Users\\XX\\Desktop')
wb1 = openpyxl.load_workbook('Test file python.xlsx', data_only = True) #open source excel file
ws1 = wb1.worksheets[0]
wb2 = openpyxl.load_workbook('test3.xlsx', data_only = True) #destination excel file
ws2 = wb2.active
#row_offset = ws2.max_row + 1
for i in range(10,150):
for j in range(3,13):
c = ws1.cell(row = i, column = j)
rowOffset = ws2.max_row + 1
rowNum = rowOffset
ws2.cell(row = rowNum, column = j-2).value = c.value
wb2.save('test3.xlsx')
以下是excel中的输出截图。楼梯输出
你正在改变 ws2.max_row
每次你把东西放进 ws2
(即 ws2.cell(row = rowNum, column = j-2).value = c.value
你的 max_row
上升一个影响整个循环的效果。
使用 current_row = ws2.max_row
外的嵌套循环,它应该可以解决你的 "楼梯 "问题。
另外,请注意,当你在第一次迭代中运行的时候 max_row == 1
这就是为什么你的表从第2行开始而不是第1行。