导入数据时,从openpyxl中获取楼梯输出。

问题描述 投票:0回答:1

我试图将数据从多个工作表导入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中的输出截图。楼梯输出

python python-3.x csv openpyxl xlsx
1个回答
0
投票

你正在改变 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行。

© www.soinside.com 2019 - 2024. All rights reserved.