Openpyxl-将数据从Excel工作簿追加到另一个工作簿

时间:2020-04-08 11:59:18

标签: python excel pandas openpyxl

我想从工作簿1中获得特定的一行,并将其追加到工作簿2中的现有数据之后。

到目前为止,我尝试过的代码可以在下面找到:

import openpyxl as xl
from openpyxl.utils import range_boundaries
min_cols, min_rows, max_cols, max_rows = range_boundaries('A:GH')

#Take source file
source = r"C:\Users\Desktop\Python project\Workbook1.xlsx"
wb1 = xl.load_workbook(source)
ws1 = wb1["P2"] #get the needed sheet


#Take destination file
destination = r"C:\Users\Desktop\Python project\Workbook2.xlsx"
wb2 = xl.load_workbook(destination)
ws2 = wb2["A3"] #get the needed sheet


row_data = 0

#Get row & col position and store it in row_data & col_data
for row in ws1.iter_rows():
    for cell in row:
        if cell.value == "Positive":
            row_data += cell.row


for row in ws1.iter_rows(min_row=row_data, min_col = 1, max_col=250, max_row = row_data):
    ws2.append((cell.value for cell in row[min_cols:max_cols]))  


wb2.save(destination)
wb2.close()

但是当我使用上面提到的代码时,我得到了结果,但是移位了1行。 我希望附加到第8行的数据位于第7行,紧接在工作簿2中的最后一个数据之后。 (请参见下图)

Workbook 2

有人收到任何反馈吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,并将其发布在这里,以防任何人遇到相同的问题。尽管下面的单元格看起来是空的,但它们的格式显然很奇怪。这就是Python脚本将单元格视为非空并将数据附加/移动到另一个地方(没有格式的地方)的原因。

解决方案是将数据下方的每一行格式化为空白单元格。 (只需从新工作簿中复制一定范围的空白单元格,然后将其粘贴到您的数据下方即可)

希望有帮助! ;)