使用Python刪除Excel中的指定行列
在日常數(shù)據(jù)處理中,我們經(jīng)常需要對 Excel 文件進(jìn)行編輯,其中刪除不必要的行和列是常見操作。本文將介紹如何使用免費(fèi)庫 Free Spire.XLS for Python 來高效刪除 Excel 中的行和列,幫助你簡化數(shù)據(jù)處理流程。
一、Free Spire.XLS:輕量級 Excel 操作庫
在 Python 生態(tài)中,處理 Excel 的主流庫包括 pandas 和 openpyxl,與它們相比 Free Spire.XLS 具有以下優(yōu)勢:
- 無需依賴 Office,獨(dú)立運(yùn)行,跨平臺(tái)兼容
- 支持多格式,
.xls、.xlsx、.csv全覆蓋 - 保留原始樣式,刪除操作后不影響表格樣式
二、具體操作:刪除行與列的完整流程
1. 安裝免費(fèi)庫
通過 pip 安裝(注意:有篇幅限制):
pip install Spire.Xls.Free
2. 刪除指定行
from spire.xls import *
from spire.xls.common import *
# 加載 Excel
workbook = Workbook()
workbook.LoadFromFile("input.xlsx")
# 定位到第一個(gè)工作表
worksheet = workbook.Worksheets[0]
# 刪除第2行(索引從1開始)
worksheet.DeleteRow(2)
# 保存結(jié)果
workbook.SaveToFile("output.xlsx", FileFormat.XLSX)
關(guān)鍵點(diǎn):
- 刪除后,后續(xù)行會(huì)自動(dòng)上移,無需額外調(diào)整
- 支持刪除多行:
DeleteRows(start_index, count)
3. 刪除指定列
# 繼續(xù)使用上文的 workbook 對象
worksheet.DeleteColumn(1) # 刪除第1列
workbook.SaveToFile("output.xlsx")
注意事項(xiàng):
- 刪除列后,表格寬度自動(dòng)縮減
- 若需刪除多列,優(yōu)先刪除靠右的列以避免索引錯(cuò)位
三、方法補(bǔ)充
使用 Python 刪除 Excel 表格中的行
刪除特定行
如果你已知需要?jiǎng)h除的行號(hào),可以使用Worksheet.DeleteRow(rowIndex: int, rowCount: int) 方法,通過指定起始行號(hào)和刪除行數(shù),直接移除一行或多行數(shù)據(jù)。這種方式適用于結(jié)構(gòu)固定或需要批量刪除指定位置行的 Excel 表格。
實(shí)現(xiàn)步驟:
- 創(chuàng)建 Workbook 對象并加載 Excel 文件。
- 獲取目標(biāo)工作表。
- 調(diào)用 DeleteRow() 方法刪除指定行。
- 保存修改后的文件。
實(shí)現(xiàn)代碼:
from spire.xls.common import *
from spire.xls import *
# 創(chuàng)建 Workbook 對象
workbook = Workbook()
# 加載 Excel 文件
workbook.LoadFromFile("測試.xlsx")
# 獲取第一個(gè)工作表
worksheet = workbook.Worksheets[0]
# 從第 5 行開始刪除 2 行
worksheet.DeleteRow(5, 2)
# 保存結(jié)果文件
workbook.SaveToFile("刪除特定行.xlsx", ExcelVersion.Version2016)
workbook.Dispose()
刪除空白行
在處理 Excel 表格時(shí),空白行會(huì)影響數(shù)據(jù)的完整性和可讀性。使用 Worksheet.Rows[index].IsBlank 屬性,可以輕松判斷某一行是否為空。若返回值為 True,則說明該行為空白行,可使用 DeleteRow() 方法將其刪除。
實(shí)現(xiàn)步驟:
- 創(chuàng)建 Workbook 對象并加載 Excel 文件。
- 獲取目標(biāo)工作表。
- 倒序遍歷所有行,使用 IsBlank 屬性判斷其是否為空。
- 對空白行調(diào)用 DeleteRow() 方法進(jìn)行刪除。
- 保存修改后的 Excel 文件。
實(shí)現(xiàn)代碼:
from spire.xls import *
from spire.xls.common import *
# 創(chuàng)建 Workbook 實(shí)例
workbook = Workbook()
# 加載 Excel 文件
workbook.LoadFromFile("測試.xlsx")
# 獲取第一個(gè)工作表
sheet = workbook.Worksheets[0]
# 刪除空白行(倒序遍歷避免索引錯(cuò)誤)
for i in range(sheet.Rows.Length - 1, -1, -1):
if sheet.Rows[i].IsBlank:
sheet.DeleteRow(i + 1)
# 保存結(jié)果文件
workbook.SaveToFile("刪除空白行", ExcelVersion.Version2013)
workbook.Dispose()
刪除含指定數(shù)據(jù)的行
當(dāng)需要?jiǎng)h除某些包含特定關(guān)鍵詞(如“已取消”、“無效”)的行時(shí),可通過Worksheet.FindAll()方法查找關(guān)鍵詞所在的單元格并獲取其所在行,再使用DeleteRow()方法刪除這些行。
實(shí)現(xiàn)步驟:
- 創(chuàng)建 Workbook 對象并加載 Excel 文件。
- 獲取目標(biāo)工作表。
- 使用 FindAll() 方法查找包含指定內(nèi)容的所有單元格。
- 提取這些單元格所在的行索引,并去重。
- 倒序遍歷行索引并使用DeleteRow()方法逐行刪除。
- 保存處理后的文件。
實(shí)現(xiàn)代碼:
from spire.xls.common import *
from spire.xls import *
# 創(chuàng)建 Workbook 對象
workbook = Workbook()
# 加載 Excel 文件
workbook.LoadFromFile("測試.xlsx")
# 獲取第一個(gè)工作表
worksheet = workbook.Worksheets[0]
# 查找包含特定值的單元格
ranges = worksheet.FindAll("已取消", FindType.Text, ExcelFindOptions.MatchEntireCellContent)
# 存儲(chǔ)行索引
row_indexes = []
# 遍歷查找到的單元格
for range in ranges:
row_index = range.Row
if row_index not in row_indexes:
row_indexes.append(row_index)
# 倒序排列行索引
row_indexes.sort(reverse=True)
# 逐行刪除
for row_index in row_indexes:
worksheet.DeleteRow(row_index)
# 保存結(jié)果文件
workbook.SaveToFile("刪除含特定數(shù)據(jù)的行.xlsx", ExcelVersion.Version2016)
workbook.Dispose()使用 Python 刪除 Excel 表格中的列
刪除特定列
若已明確某些列不再需要,可通過使用Worksheet.DeleteColumn(columnIndex: int, columnCount: int) 方法,刪除一列或多列。
實(shí)現(xiàn)步驟:
- 創(chuàng)建 Workbook 對象并加載 Excel 文件。
- 獲取目標(biāo)工作表。
- 使用 DeleteColumn() 方法,從工作表中刪除指定列。
- 保存修改后的文件。
實(shí)現(xiàn)代碼:
from spire.xls.common import *
from spire.xls import *
# 創(chuàng)建 Workbook 對象
workbook = Workbook()
# 加載 Excel 文件
workbook.LoadFromFile("測試.xlsx")
# 獲取第一個(gè)工作表
worksheet = workbook.Worksheets[0]
# 從第 3 列開始刪除 2 列
worksheet.DeleteColumn(3, 2)
# 保存結(jié)果文件
workbook.SaveToFile("刪除特定列.xlsx", ExcelVersion.Version2016)
workbook.Dispose()
刪除空白列
空白列在 Excel 表格中同樣會(huì)造成數(shù)據(jù)干擾。使用 Worksheet.Columns[index].IsBlank 屬性可以檢測列是否為空,若返回值為 True,即可調(diào)用 DeleteColumn() 方法刪除該列。
實(shí)現(xiàn)步驟:
- 創(chuàng)建 Workbook 對象并加載 Excel 文件。
- 獲取目標(biāo)工作表。
- 倒序遍歷所有列,使用IsBlank屬性判斷其是否為空。
- 若為空,則調(diào)用 DeleteColumn() 方法進(jìn)行刪除。
- 保存修改后的文件。
實(shí)現(xiàn)代碼:
from spire.xls import *
from spire.xls.common import *
# 創(chuàng)建 Workbook 實(shí)例
workbook = Workbook()
# 加載 Excel 文件
workbook.LoadFromFile("測試.xlsx")
# 獲取第一個(gè)工作表
sheet = workbook.Worksheets[0]
# 刪除空白列(倒序遍歷避免索引混亂)
for i in range(sheet.Columns.Length - 1, -1, -1):
if sheet.Columns[i].IsBlank:
sheet.DeleteColumn(i + 1)
# 保存結(jié)果文件
workbook.SaveToFile("刪除空白列.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
刪除含指定數(shù)據(jù)的列
如果你需要?jiǎng)h除包含某個(gè)特定值的整列數(shù)據(jù),比如含有“測試”的列,可以使用Worksheet.FindAll()方法查找數(shù)據(jù),獲取其所在單元格,獲取該單元格所在列,再調(diào)用 DeleteColumn() 方法刪除對應(yīng)列。
實(shí)現(xiàn)步驟:
- 創(chuàng)建 Workbook 對象并加載 Excel 文件。
- 獲取目標(biāo)工作表。
- 使用 FindAll() 方法查找包含指定文本的單元格;
- 提取這些單元格所在的列索引,并去重;
- 倒序遍歷列索引并使用DeleteColumn()方法逐列刪除;
- 保存文件。
實(shí)現(xiàn)代碼:
from spire.xls.common import *
from spire.xls import *
# 創(chuàng)建 Workbook 對象
workbook = Workbook()
# 加載 Excel 文件
workbook.LoadFromFile("測試.xlsx")
# 獲取第一個(gè)工作表
worksheet = workbook.Worksheets[0]
# 查找包含指定值的單元格
ranges = worksheet.FindAll("測試", FindType.Text, ExcelFindOptions.MatchEntireCellContent)
# 存儲(chǔ)列索引
col_indexes = []
# 遍歷查找到的單元格
for range in ranges:
col_index = range.Column
if col_index not in col_indexes:
col_indexes.append(col_index)
# 倒序排列列索引
col_indexes.sort(reverse=True)
# 逐列刪除
for col_index in col_indexes:
worksheet.DeleteColumn(col_index)
# 保存結(jié)果文件
workbook.SaveToFile("刪除含指定數(shù)據(jù)的列.xlsx", ExcelVersion.Version2016)
workbook.Dispose()本文介紹了使用 Free Spire.XLS for Python 庫刪除 Excel 中行和列的具體方法。該庫提供了對應(yīng)的 API,可實(shí)現(xiàn)單個(gè)行 / 列及多個(gè)連續(xù)行 / 列的刪除操作,操作過程需遵循其索引規(guī)則及資源管理要求。
到此這篇關(guān)于使用Python刪除Excel中的指定行列的文章就介紹到這了,更多相關(guān)Python刪除Excel指定行列內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)音頻添加數(shù)字水印的示例詳解
數(shù)字水印技術(shù)可以將隱藏信息嵌入到音頻文件中而不明顯影響音頻質(zhì)量,下面小編將介紹幾種在Python中實(shí)現(xiàn)音頻數(shù)字水印的方法,希望對大家有所幫助2025-04-04
健身房被搭訕?用python寫了個(gè)小米計(jì)時(shí)器助人為樂
今天教大家Python圖形界面開發(fā)的相關(guān)知識(shí),文章圍繞著如何實(shí)現(xiàn)一個(gè)小米手機(jī)上的秒表計(jì)時(shí)器功能展開,文中有非常詳細(xì)的代碼示例,需要的朋友可以參考下2021-06-06
jupyter 中文亂碼設(shè)置編碼格式 避免控制臺(tái)輸出的解決
這篇文章主要介紹了jupyter 中文亂碼設(shè)置編碼格式 避免控制臺(tái)輸出的解決,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Python使用APScheduler設(shè)置每月固定日期運(yùn)行的定時(shí)任務(wù)
在開發(fā)自動(dòng)化腳本或后臺(tái)服務(wù)時(shí),我們經(jīng)常需要讓某些任務(wù)按照特定的時(shí)間周期自動(dòng)執(zhí)行,Python 的 APScheduler(Advanced Python Scheduler)庫是一個(gè)強(qiáng)大且靈活的工具,能夠輕松地幫助我們實(shí)現(xiàn)這些需求,下面我們就來看看具體實(shí)現(xiàn)方法吧2026-01-01
基于Python實(shí)現(xiàn)讀取嵌套壓縮包下文件的方法
工作中遇到的問題,需要用Python實(shí)現(xiàn)嵌套壓縮包下文件讀取,本文給大家介紹了詳細(xì)的解決方法,并有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下2025-04-04
淺談python中常用的8種經(jīng)典數(shù)據(jù)結(jié)構(gòu)
這篇文章主要介紹了python中常用的8種經(jīng)典數(shù)據(jù)結(jié)構(gòu),包括原生數(shù)據(jù)結(jié)構(gòu),NumPy包中的數(shù)據(jù)結(jié)構(gòu),以及Pandas包中的數(shù)據(jù)結(jié)構(gòu),需要的朋友可以參考下2023-03-03
Python Lambda函數(shù)使用總結(jié)詳解
這篇文章主要介紹了Python Lambda函數(shù)使用總結(jié)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
Python實(shí)現(xiàn)連點(diǎn)器的示例代碼
這篇文章主要介紹了Python實(shí)現(xiàn)連點(diǎn)器,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03

