Python 刪除 Excel 中的空白行列

在 Excel 數(shù)據(jù)處理場景中,手動刪除大量空行、空列效率極低,而 Python 結(jié)合 Free Spire.XLS for Python 庫能實(shí)現(xiàn)自動化清理。相比于遍歷單元格判斷空值的傳統(tǒng)方式,F(xiàn)ree Spire.XLS 提供了 IsBlank 屬性,可直接判斷整行/整列是否為空,代碼更簡潔、執(zhí)行效率更高。


環(huán)境準(zhǔn)備

Free Spire.XLS for Python 是一款輕量級免費(fèi) Excel 處理庫,無需安裝 Microsoft Excel,純 Python 環(huán)境即可操作 .xls/.xlsx 格式文件。該庫可通過 pip 命令直接安裝:

pip install Spire.XLS.Free

免費(fèi)版僅適用于小型文檔、項目


核心功能實(shí)現(xiàn):刪除空行空列

from spire.xls import *
from spire.xls.common import *

# 創(chuàng)建工作簿對象并加載文件
workbook = Workbook()
workbook.LoadFromFile("Input1.xlsx")

# 獲取第一張工作表
sheet = workbook.Worksheets[0]

# 刪除空白行
for i in range(sheet.Rows.Length - 1, -1, -1):
    if sheet.Rows[i].IsBlank:
        sheet.DeleteRow(i + 1)

# 刪除空白列
for j in range(sheet.Columns.Length - 1, -1, -1):
    if sheet.Columns[j].IsBlank:
        sheet.DeleteColumn(j + 1)

# 保存文件
workbook.SaveToFile("Deleted.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

代碼關(guān)鍵部分詳解

代碼片段 功能與注意事項
sheet.Rows.Length 獲取工作表中總行數(shù)(含空行),作為遍歷的邊界值
sheet.Rows[].IsBlank 核心屬性:返回 True 則表示當(dāng)前行所有單元格均為空
range(..., -1, -1) 倒序遍歷
sheet.DeleteRow() 刪除指定行
sheet.DeleteColumn() 刪除指定列
workbook.Dispose() 釋放工作簿占用的內(nèi)存資源,大文件處理時必須添加

關(guān)鍵注意事項

1. IsBlank 的判斷規(guī)則
IsBlank 僅將完全沒有輸入任何內(nèi)容的單元格視為空。如果單元格包含空格字符、空字符串 "" 或公式返回的空值,IsBlank 會返回 False。若需將這些情況也視為空,可先遍歷單元格清除多余空格(如 cell.Text.strip())后再處理。

2. 索引偏移陷阱

  • Rows[i] / Columns[j] 索引從 0 開始
  • DeleteRow(i) / DeleteColumn(j) 索引從 1 開始,務(wù)必在刪除時 +1,否則將誤刪其他行/列。

3. 多工作表處理
若需清洗整個工作簿,可遍歷 workbook.Worksheets 集合,對每一張表重復(fù)上述刪除邏輯。


擴(kuò)展功能(按需使用)

1. 批量處理文件夾下所有Excel文件

import os

# 遍歷指定文件夾下所有.xlsx/.xls文件
def batch_process_excel(folder_path: str):
    for file_name in os.listdir(folder_path):
        if file_name.endswith((".xlsx", ".xls")):
            input_path = os.path.join(folder_path, file_name)
            output_path = os.path.join(folder_path, f"cleaned_{file_name}")
            delete_blank_rows_columns(input_path, output_path)

# 調(diào)用示例:處理data文件夾下所有Excel文件
batch_process_excel("data")

2. 僅刪除指定列為空的行

若需實(shí)現(xiàn)“某列(如A列)為空則刪除整行”,可替換空行判斷邏輯:

# 替換原有空行刪除代碼
for i in range(sheet.Rows.Length - 1, -1, -1):
    # 判斷A列(索引0)單元格是否為空
    if sheet.Rows[i].Cells[0].Text.strip() == "":
        sheet.DeleteRow(i + 1)

提示:Cells[0].Text 返回單元格顯示的文本,strip() 可去除前后空格,避免將僅含空格的單元格視為有效數(shù)據(jù)。


總結(jié)

利用 Free Spire.XLS 提供的 IsBlank 屬性和倒序刪除策略,我們能夠以極少的代碼穩(wěn)定、高效地清除 Excel 中的空白行列。該方法尤其適合以下場景:

  • 報表自動清洗流水線
  • 從異構(gòu)數(shù)據(jù)源導(dǎo)入 Excel 前的預(yù)處理
  • 批量整理老舊 Excel 文檔

配合本文提供的擴(kuò)展函數(shù),可輕松應(yīng)對單文件、多文件乃至定制化條件的刪除任務(wù),大幅提升數(shù)據(jù)處理效率。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容