我有一个每周更新数千行的工作表,过滤后需要从该工作表中传输行。我正在使用当前代码查找具有我需要的值的单元格,然后将整行传输到另一个工作表,但在保存文件后,出现“IndexError: list index out of range”异常。

我使用的代码如下:

import openpyxl

wb1 = openpyxl.load_workbook('file1.xlsx')
wb2 = openpyxl.load_workbook('file2.xlsx')

ws1 = wb1.active
ws2 = wb2.active

for row in ws1.iter_rows():
    for cell in row:
        if cell.value == 'TrueValue':
            n = 'A' + str(cell.row) + ':' + ('GH' + str(cell.row))
            for row2 in ws1.iter_rows(n):
                ws2.append(row2)

wb2.save("file2.xlsx")

我用来工作的原始代码如下,由于文件很大,导致 MS Excel 无法打开它们(超过 40mb),因此必须进行修改。
n = 'A3' + ':' + ('GH'+ str(ws1.max_row))
for row in ws1.iter_rows(n):
    ws2.append(row)

谢谢。

最佳答案

使用列表来保存特定行的每一列中的项目。
然后将列表附加到您的 ws2。

...

def iter_rows(ws,n):  #produce the list of items in the particular row
        for row in ws.iter_rows(n):
            yield [cell.value for cell in row]

for row in ws1.iter_rows():
    for cell in row:
        if cell.value == 'TrueValue':
            n = 'A' + str(cell.row) + ':' + ('GH' + str(cell.row))
            list_to_append = list(iter_rows(ws1,n))
            for items in list_to_append:
                ws2.append(items)

关于python - Openpyxl:如何在检查单元格是否包含特定值后复制一行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44924025/

10-16 12:12