使用Python刪除Excel中的行列和單元格示例詳解
在處理Excel數(shù)據(jù)時(shí),刪除不需要的行、列或單元格是一項(xiàng)常見(jiàn)且必要的操作。然而,當(dāng)面對(duì)大量 Excel 文件或結(jié)構(gòu)復(fù)雜的數(shù)據(jù)表格時(shí),手動(dòng)處理這些任務(wù)不僅效率低下,還容易因操作失誤造成數(shù)據(jù)錯(cuò)誤。
使用 Python腳本,可以實(shí)現(xiàn)對(duì) Excel 表格的高效自動(dòng)化處理。無(wú)論是刪除指定的行或列、批量清除空白行和空白列,還是根據(jù)關(guān)鍵字篩選并刪除包含特定數(shù)據(jù)的單元格,這些操作都可以通過(guò)腳本一次性完成,大幅提升工作效率和準(zhǔn)確性。
本文將詳細(xì)介紹如何使用 Python 刪除 Excel 中的行、列和單元格,內(nèi)容涵蓋以下幾個(gè)方面:
- 開(kāi)發(fā)環(huán)境準(zhǔn)備
- 使用 Python 刪除 Excel 表格中的行
- 刪除特定行
- 刪除空白行
- 刪除含指定數(shù)據(jù)的行
- 使用 Python 刪除 Excel 表格中的列
- 刪除特定列
- 刪除空白列
- 刪除含指定數(shù)據(jù)的列
- 使用 Python 刪除 Excel 中的單元格并自動(dòng)移動(dòng)剩余內(nèi)容
- 刪除特定單元格
- 刪除空白單元格
- 刪除含指定數(shù)據(jù)的單元格
開(kāi)發(fā)環(huán)境準(zhǔn)備
在操作 Excel 文件之前,首先需要準(zhǔn)備好 Python 開(kāi)發(fā)環(huán)境,并引入相應(yīng)的庫(kù)。本文將使用第三方庫(kù) Spire.XLS for Python,它支持讀取、修改、寫入以及轉(zhuǎn)換 Excel 文件,且不依賴微軟Office或其他第三方軟件。
安裝 Spire.XLS
Spire.XLS 提供了兩個(gè)版本,可以根據(jù)需求選擇合適的版本:
社區(qū)版:免費(fèi)使用,但每個(gè) .xls 文件限制為 200 行和 5 個(gè)工作表(.xlsx 文件沒(méi)有此限制)。安裝命令:
pip install spire.xls.free
商業(yè)版:功能完備,但會(huì)添加水印。可以在 [這里] 申請(qǐng)免費(fèi)的測(cè)試許可證。
安裝命令:
pip install spire.xls
安裝完成后,即可在Python應(yīng)用程序中調(diào)用該庫(kù)的API。
使用 Python 刪除 Excel 表格中的行
刪除特定行
如果你已知需要?jiǎng)h除的行號(hào),可以使用Worksheet.DeleteRow(rowIndex: int, rowCount: int) 方法,通過(guò)指定起始行號(hào)和刪除行數(shù),直接移除一行或多行數(shù)據(jù)。這種方式適用于結(jié)構(gòu)固定或需要批量刪除指定位置行的 Excel 表格。
實(shí)現(xiàn)步驟:
- 創(chuàng)建 Workbook 對(duì)象并加載 Excel 文件。
- 獲取目標(biāo)工作表。
- 調(diào)用 DeleteRow() 方法刪除指定行。
- 保存修改后的文件。
實(shí)現(xiàn)代碼:
from spire.xls.common import * from spire.xls import * # 創(chuàng)建 Workbook 對(duì)象 workbook = Workbook() # 加載 Excel 文件 workbook.LoadFromFile("測(cè)試.xlsx") # 獲取第一個(gè)工作表 worksheet = workbook.Worksheets[0] # 從第 5 行開(kāi)始刪除 2 行 worksheet.DeleteRow(5, 2) # 保存結(jié)果文件 workbook.SaveToFile("刪除特定行.xlsx", ExcelVersion.Version2016) workbook.Dispose()
刪除空白行
在處理 Excel 表格時(shí),空白行會(huì)影響數(shù)據(jù)的完整性和可讀性。使用 Worksheet.Rows[index].IsBlank 屬性,可以輕松判斷某一行是否為空。若返回值為 True,則說(shuō)明該行為空白行,可使用 DeleteRow() 方法將其刪除。
實(shí)現(xiàn)步驟:
- 創(chuàng)建 Workbook 對(duì)象并加載 Excel 文件。
- 獲取目標(biāo)工作表。
- 倒序遍歷所有行,使用 IsBlank 屬性判斷其是否為空。
- 對(duì)空白行調(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("測(cè)試.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)鍵詞(如“已取消”、“無(wú)效”)的行時(shí),可通過(guò)Worksheet.FindAll()方法查找關(guān)鍵詞所在的單元格并獲取其所在行,再使用DeleteRow()方法刪除這些行。
實(shí)現(xiàn)步驟:
- 創(chuàng)建 Workbook 對(duì)象并加載 Excel 文件。
- 獲取目標(biāo)工作表。
- 使用 FindAll() 方法查找包含指定內(nèi)容的所有單元格。
- 提取這些單元格所在的行索引,并去重。
- 倒序遍歷行索引并使用DeleteRow()方法逐行刪除。
- 保存處理后的文件。
實(shí)現(xiàn)代碼:
from spire.xls.common import * from spire.xls import * # 創(chuàng)建 Workbook 對(duì)象 workbook = Workbook() # 加載 Excel 文件 workbook.LoadFromFile("測(cè)試.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 表格中的列
刪除特定列
若已明確某些列不再需要,可通過(guò)使用Worksheet.DeleteColumn(columnIndex: int, columnCount: int) 方法,刪除一列或多列。
實(shí)現(xiàn)步驟:
- 創(chuàng)建 Workbook 對(duì)象并加載 Excel 文件。
- 獲取目標(biāo)工作表。
- 使用 DeleteColumn() 方法,從工作表中刪除指定列。
- 保存修改后的文件。
實(shí)現(xiàn)代碼:
from spire.xls.common import * from spire.xls import * # 創(chuàng)建 Workbook 對(duì)象 workbook = Workbook() # 加載 Excel 文件 workbook.LoadFromFile("測(cè)試.xlsx") # 獲取第一個(gè)工作表 worksheet = workbook.Worksheets[0] # 從第 3 列開(kāi)始刪除 2 列 worksheet.DeleteColumn(3, 2) # 保存結(jié)果文件 workbook.SaveToFile("刪除特定列.xlsx", ExcelVersion.Version2016) workbook.Dispose()
刪除空白列
空白列在 Excel 表格中同樣會(huì)造成數(shù)據(jù)干擾。使用 Worksheet.Columns[index].IsBlank 屬性可以檢測(cè)列是否為空,若返回值為 True,即可調(diào)用 DeleteColumn() 方法刪除該列。
實(shí)現(xiàn)步驟:
- 創(chuàng)建 Workbook 對(duì)象并加載 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("測(cè)試.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ù),比如含有“測(cè)試”的列,可以使用Worksheet.FindAll()方法查找數(shù)據(jù),獲取其所在單元格,獲取該單元格所在列,再調(diào)用 DeleteColumn() 方法刪除對(duì)應(yīng)列。
實(shí)現(xiàn)步驟:
- 創(chuàng)建 Workbook 對(duì)象并加載 Excel 文件。
- 獲取目標(biāo)工作表。
- 使用 FindAll() 方法查找包含指定文本的單元格;
- 提取這些單元格所在的列索引,并去重;
- 倒序遍歷列索引并使用DeleteColumn()方法逐列刪除;
- 保存文件。
實(shí)現(xiàn)代碼:
from spire.xls.common import * from spire.xls import * # 創(chuàng)建 Workbook 對(duì)象 workbook = Workbook() # 加載 Excel 文件 workbook.LoadFromFile("測(cè)試.xlsx") # 獲取第一個(gè)工作表 worksheet = workbook.Worksheets[0] # 查找包含指定值的單元格 ranges = worksheet.FindAll("測(cè)試", 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()
使用 Python 刪除 Excel 中的單元格并自動(dòng)移動(dòng)剩余內(nèi)容
刪除特定單元格
相較于整行整列的刪除,刪除單元格更常用于局部調(diào)整。例如在數(shù)據(jù)導(dǎo)入后,可能存在個(gè)別無(wú)效單元格需要清除,并將其他數(shù)據(jù)自動(dòng)移位填充。
使用Worksheet.DeleteRange()方法,可以輕松移除不需要的單元格或單元格范圍,并指定剩余內(nèi)容的移動(dòng)方向,例如DeleteOption.MoveLeft,表示將剩余單元格內(nèi)容向左移。
實(shí)現(xiàn)步驟:
- 創(chuàng)建 Workbook 對(duì)象并加載 Excel 文件。
- 獲取目標(biāo)工作表。
- 獲取目標(biāo)區(qū)域的單元格范圍。
- 調(diào)用 DeleteRange() 方法刪除該單元格范圍并設(shè)置剩余內(nèi)容的移動(dòng)方向;
- 保存修改后的文件。
實(shí)現(xiàn)代碼:
from spire.xls.common import * from spire.xls import * # 創(chuàng)建 Workbook 對(duì)象 workbook = Workbook() # 加載 Excel 文件 workbook.LoadFromFile("測(cè)試.xlsx") # 獲取第一個(gè)工作表 worksheet = workbook.Worksheets[0] # 通過(guò)指定起始行、起始列、結(jié)束行和結(jié)束列確定要?jiǎng)h除的單元格范圍(也可以使用范圍名稱如 "A2:B3") range_to_delete = worksheet.Range[2, 1, 3, 2] # 刪除該區(qū)域,并將其右側(cè)單元格左移 worksheet.DeleteRange(range_to_delete, DeleteOption.MoveLeft) # 保存結(jié)果文件 workbook.SaveToFile("刪除特定單元格.xlsx", ExcelVersion.Version2016) workbook.Dispose()
刪除空白單元格
空白單元格可能導(dǎo)致數(shù)據(jù)排列不整齊或計(jì)算錯(cuò)誤??梢允褂?Worksheet.Cells[index].IsBlank 屬性逐個(gè)檢測(cè)單元格是否為空,然后使用 DeleteRange() 刪除它并設(shè)置剩余數(shù)據(jù)的移動(dòng)方向。
實(shí)現(xiàn)步驟:
- 創(chuàng)建 Workbook 對(duì)象并加載 Excel 文件。
- 獲取目標(biāo)工作表。
- 遍歷工作表中的所有單元格。
- 使用IsBlank屬性判斷其是否為空。
- 若為空則使用 DeleteRange() 刪除它并設(shè)置其右側(cè)剩余數(shù)據(jù)的移動(dòng)方向。
- 保存結(jié)果文件。
示例代碼:
from spire.xls import * from spire.xls.common import * # 創(chuàng)建 Workbook 實(shí)例 workbook = Workbook() # 加載 Excel 文件 workbook.LoadFromFile("測(cè)試.xlsx") # 獲取第一個(gè)工作表 sheet = workbook.Worksheets[0] # 刪除空白單元格(倒序遍歷避免索引問(wèn)題) for i in range(sheet.Cells.Length - 1, -1, -1): if sheet.Cells[i].IsBlank: sheet.DeleteRange(sheet.Cells[i], DeleteOption.MoveLeft) # 保存結(jié)果文件 workbook.SaveToFile("刪除空白單元格.xlsx", ExcelVersion.Version2013) workbook.Dispose()
刪除含指定數(shù)據(jù)的單元格
如果需要?jiǎng)h除表格中包含特定內(nèi)容的單元格,可以使用Workbook.FindAll()方法查找這些單元格,然后使用 DeleteRange() 刪除這些單元格并設(shè)置剩余數(shù)據(jù)的移動(dòng)方向。
實(shí)現(xiàn)步驟:
- 創(chuàng)建 Workbook 對(duì)象并加載 Excel 文件。
- 獲取目標(biāo)工作表。
- 使用 Workbook.FindAll() 方法查找包含指定內(nèi)容的單元格。
- 遍歷這些單元格,調(diào)用 DeleteRange() 刪除它們并移動(dòng)剩余內(nèi)容。
- 保存修改后的文件。
實(shí)現(xiàn)代碼:
from spire.xls.common import * from spire.xls import * # 創(chuàng)建 Workbook 對(duì)象 workbook = Workbook() # 加載 Excel 文件 workbook.LoadFromFile("測(cè)試.xlsx") # 獲取第一個(gè)工作表 worksheet = workbook.Worksheets[0] # 查找包含指定值的所有單元格 ranges = worksheet.FindAll("測(cè)試", FindType.Text, ExcelFindOptions.MatchEntireCellContent) # 逐個(gè)刪除這些單元格,并將右側(cè)單元格左移 for range in ranges: worksheet.DeleteRange(range, DeleteOption.MoveLeft) # 保存結(jié)果文件 workbook.SaveToFile("刪除含特定數(shù)據(jù)的單元格.xlsx", ExcelVersion.Version2016) workbook.Dispose()
到此這篇關(guān)于使用Python刪除Excel中的行列和單元格示例詳解的文章就介紹到這了,更多相關(guān)Python刪除Excel內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python+opencv打開(kāi)攝像頭,保存視頻、拍照功能的實(shí)現(xiàn)方法
今天小編就為大家分享一篇python+opencv打開(kāi)攝像頭,保存視頻、拍照功能的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01Python使用sort()方法對(duì)數(shù)組進(jìn)行排序的操作指南
在開(kāi)發(fā)過(guò)程中,經(jīng)常需要對(duì)數(shù)據(jù)進(jìn)行排序,Python 中的 sort() 方法是用來(lái)對(duì)列表進(jìn)行排序的,它是一個(gè)非常常用且高效的排序工具,本文將通過(guò)一個(gè)實(shí)際項(xiàng)目的代碼示例,來(lái)講解如何使用 sort() 方法對(duì)數(shù)組進(jìn)行排序,需要的朋友可以參考下2025-06-06Python字符編碼轉(zhuǎn)碼之GBK,UTF8互轉(zhuǎn)
說(shuō)到python的編碼,一句話總結(jié),說(shuō)多了都是淚啊,這個(gè)在以后的python的開(kāi)發(fā)中絕對(duì)是一件令人頭疼的事情。所以有必要輸入理解2020-02-02詳解Python二維數(shù)組與三維數(shù)組切片的方法
這篇文章主要介紹了詳解Python二維數(shù)組與三維數(shù)組切片的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07python?pip安裝的包目錄(site-packages目錄的位置)
這篇文章主要介紹了python?pip安裝的包放在哪里(site-packages目錄的位置),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03flask框架實(shí)現(xiàn)修改密碼和免密登錄功能
flask是python web開(kāi)發(fā)的常用框架之一。本文將講述flask如何實(shí)現(xiàn)修改密碼和免密登錄功能2021-05-05python實(shí)現(xiàn)將文件夾內(nèi)的每張圖片批量分割成多張
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)將文件夾內(nèi)的每張圖片批量分割成多張,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07使用Python實(shí)現(xiàn)屏幕截圖功能的詳細(xì)教程
Python使用ImageGrab截圖主要依賴于Pillow庫(kù)(PIL庫(kù)的一個(gè)分支),該庫(kù)提供了ImageGrab模塊來(lái)實(shí)現(xiàn)屏幕截圖功能,以下是一個(gè)詳細(xì)的截圖教程,需要的朋友可以參考下2025-01-01Python3實(shí)時(shí)操作處理日志文件的實(shí)現(xiàn)
本文主要介紹了Python3實(shí)時(shí)操作處理日志文件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03