Openpyxl 太慢,无法删除空行并将其向上移动 Microsoft Excel

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

我的 Microsoft Excel 数据中有多个空行,因此我想使用 Python 删除它们。然而这样做的过程中,速度太慢了,数据本身只有80MB。这是我的代码:

import openpyxl 

file_path = 'C:\\Users\\ASUS\\Downloads\\Priority List Expiry Gathering-Drugs & Consumables Oct 2023 (3) (1) copy.xlsx'

# Load the workbook using openpyxl workbook = openpyxl.load_workbook(file_path) sheet = workbook['Sheet1']

empty_rows = [] for row in sheet.iter_rows(max_col=50):
    empty = not any(cell.value for cell in row)
    if empty:
        empty_rows.append(row[0].row)  # Append the row number

# Delete empty rows using openpyxl for row_idx in reversed(empty_rows):
    sheet.delete_rows(row_idx, 1)

有什么办法可以加快这个过程吗?因为我需要它来清理我的工作数据

python excel openpyxl
1个回答
0
投票

不确定为什么你的代码很慢,但制作两个循环可能会减慢速度。
在一个循环中执行空检查和删除应该会稍微加快速度。

import openpyxl

file_path = 'C:\\Users\\ASUS\\Downloads\\Priority List Expiry Gathering-Drugs & Consumables Oct 2023 (3) (1) copy.xlsx'

# Load the workbook using openpyxl
workbook = openpyxl.load_workbook(file_path)
sheet = workbook['Sheet1']

rows = reversed(list(sheet.iter_rows(max_row=50)))
for row in rows:
    if not any(cell.value for cell in row):
        sheet.delete_rows(row[0].row, 1)

workbook.save('deleted.xlsx')
© www.soinside.com 2019 - 2024. All rights reserved.