使用openpyxl将数据附加到新的Excel工作表中

时间:2018-02-16 16:01:35

标签: python append openpyxl

我有很多excel工作簿,我想从他们那里获取单元格值并写入新工作表。

我的代码没有附加新数据。它只是用上一个工作簿中的值覆盖单元格。

(我已经更改了粘贴的代码。它粘贴不正确。)

这是我的代码

from openpyxl import load_workbook

booklist = ["17_02.xlsx", "17_03.xlsx",
        "17_04.xlsx", "17_05.xlsx",
        "17_06.xlsx", "17_08.xlsx",
        "17_09.xlsx", "17_10.xlsx"]


for wb in booklist:
    book = load_workbook(filename =wb,data_only=True)
    report = load_workbook(filename="dest.xlsx", data_only=True)
    print(book)
    sheet = book['Sheet']
    reportsheet=report['First']
    row_count=sheet.max_row
    column_count=sheet.max_column
    for r in range(1,row_count+1):
        for c in range(1,column_count+1):
           source=sheet.cell(row=r, column=c)
           dest = reportsheet.cell(row=r, column=c)
           dest.value = source.value
           sheet.title = 'First'
           book.save("dest.xlsx")

编辑:

在mickNeill的回答之后,我改变了代码并且它可以用于追加。但现在还有另一个问题。 如果我第二次或更多时间运行代码(清除单元格之后),它会在清除的单元格之后将数据附加到行。

首先运行: 数据附加到A1:A20 清除单元格,保存并关闭工作簿。

第二轮: 数据附加到A21:A20而不是A1:A20(清除的单元格)

每次运行reportRow的代码值时,会继续增加(1,20,40 ...)并将数据附加到更多的行。

from openpyxl import load_workbook


booklist = ["17_02.xlsx", "17_03.xlsx",
    "17_04.xlsx", "17_05.xlsx",
    "17_06.xlsx", "17_08.xlsx",
    "17_09.xlsx", "17_10.xlsx"]


for wb in booklist:
    book = load_workbook(filename =wb,data_only=True)
    report = load_workbook(filename="dest.xlsx", data_only=True)
    print(book)
    sheet = book['Sheet']
    reportsheet=report['First']
    row_count=sheet.max_row
    reportRow = reportsheet.max_row
    column_count=sheet.max_column
    for r in range(1,row_count+2):
        for c in range(1,column_count+1):
            source=sheet.cell(row=r, column=c)
            dest = reportsheet.cell(row=reportRow, column=c)
            dest.value = source.value
        reportRow += 1
    report.save("dest.xlsx")

1 个答案:

答案 0 :(得分:0)

试试这个:编辑,你要保存错误的书,最后一行

from openpyxl import load_workbook

booklist = ["Book5.xlsx", "Book6.xlsx","Book7.xlsx"]

report = load_workbook(filename="dest.xlsx", data_only=True)
for wb in booklist:
    book = load_workbook(filename =wb,data_only=True)

    #print(book)
    sheet = book['Sheet1']
    reportsheet=report['First']
    row_count=sheet.max_row
    reportRow = reportsheet.max_row + 1
    print reportRow
    column_count=sheet.max_column
    for r in range(1,row_count+1):
        for c in range(1,column_count+1):
            print reportRow
            source=sheet.cell(row=r, column=c)
            dest = reportsheet.cell(row=reportRow, column=c)
            dest.value = source.value
            sheet.title = 'First' 
        reportRow += 1
report.save("dest.xlsx")