如果使用 Xlwings 的单元格范围内的所有单元格均为空,则删除整行

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

我有很多方法,但我正在努力提高这段代码的性能。任何替代方案请提出建议。 我正在尝试构建一个代码来删除整个行(如果范围内所有单元格都为空),到目前为止我已经尝试了下面的代码,它工作正常,但性能非常慢

import xlwings as xw
wb=xw.Book("example.xlsb")
del_rng = wb.sheets[1].range("A8:DW91242")
for i in range(del_rng.shape[0],0,-1):
    row=del_rng.rows[i-1]
    if all(cell.value is None for cell in row):
        row.delete()

python xlwings
1个回答
0
投票

您将

del_rng
定义为一个非常大的范围,从 A8 到 DW91242 - 远远超过 1100 万个单元格。您可以使用
Sheet.used_range
del_rng
自动调整为仅使用的数据,这将显着减少代码需要考虑的单元格数量:

import xlwings as xw
wb=xw.Book("example.xlsb")
del_rng = wb.sheets[1].used_range
for i in range(del_rng.shape[0],0,-1):
    row=del_rng.rows[i-1]
    if all(cell.value is None for cell in row):
        row.delete()
© www.soinside.com 2019 - 2024. All rights reserved.