使用 Python 删除 excel 文件中的整行

Delete an entire row in an excel file using Python

我目前正在使用 work_sheet.delete_rows() 使用 openpyxl 模块,但它似乎只删除行中的值而不是实际行本身。 我怎样才能删除整行??

这是我当前正在访问的实际 Excel 数据..

现在这是删除行后的输出。该过程只删除每行的值而不是整行本身...

我猜你的调用方式有问题。虽然您说明了您使用的是什么,但您没有向我们提供您正在使用的实际 代码

OpenPyXl 的实际 source code 表明它确实将被删除区域下方的行移动到该区域的开头。

您可以使用以下简单的电子表格实际看到这一点:

      A       B
--+-------+-------+
1 |   1   |   a   |
2 |   3   |   b   |
3 |   5   |   c   |
4 |   7   |   d   |
5 |   9   |   e   |

以下脚本显示了第二行、第三行和第四行的删除:

import openpyxl

def dumpWs(desc, ws):
    print(f'{desc}: ', end = '')
    for row in ws.values:
        print(end = '<')
        sep = ''
        for value in row:
            print(f'{sep}{value}', end = '')
            sep = ', '
        print(end = '> ')
    print()

wb = openpyxl.load_workbook('version1.xlsx')
ws = wb.active
dumpWs('As loaded   ', ws)

ws.delete_rows(2, 3)
dumpWs('After delete', ws)

wb.save('version2.xlsx')

运行 此脚本导致:

As loaded   : <1, a> <3, b> <5, c> <7, d> <9, e> 
After delete: <1, a> <9, e> 

wb.save行保存的版本符合预期:

      A       B
--+-------+-------+
1 |   1   |   a   |
5 |   9   |   e   |

可能 想要检查的一件事是您正在使用的 OpenPyXl 的版本,因为 [=17] 的各种迭代有几个错误报告=].我正在使用 3.0.3 版本(为了完整起见,Python 3.6.8)。