目錄
開發環境準備
使用 Python 刪除 Excel 表格中的行
刪除特定行
刪除空白行
刪除含指定數據的行
使用 Python 刪除 Excel 表格中的列
刪除特定列
刪除空白列
刪除含指定數據的列
使用 Python 刪除 Excel 中的單元格并自動移動剩余內容
刪除特定單元格
刪除空白單元格
刪除含指定數據的單元格
在處理Excel數據時,刪除不需要的行、列或單元格是一項常見且必要的操作。然而,當面對大量 Excel 文件或結構復雜的數據表格時,手動處理這些任務不僅效率低下,還容易因操作失誤造成數據錯誤。
使用 Python腳本,可以實現對 Excel 表格的高效自動化處理。無論是刪除指定的行或列、批量清除空白行和空白列,還是根據關鍵字篩選并刪除包含特定數據的單元格,這些操作都可以通過腳本一次性完成,大幅提升工作效率和準確性。
本文將詳細介紹如何使用 Python 刪除 Excel 中的行、列和單元格,內容涵蓋以下幾個方面:
- 開發環境準備
- 使用 Python 刪除 Excel 表格中的行
- 刪除特定行
- 刪除空白行
- 刪除含指定數據的行
- 使用 Python 刪除 Excel 表格中的列
- 刪除特定列
- 刪除空白列
- 刪除含指定數據的列
- 使用 Python 刪除 Excel 中的單元格并自動移動剩余內容
- 刪除特定單元格
- 刪除空白單元格
- 刪除含指定數據的單元格
開發環境準備
在操作 Excel 文件之前,首先需要準備好 Python 開發環境,并引入相應的庫。本文將使用第三方庫 Spire.XLS for Python,它支持讀取、修改、寫入以及轉換 Excel 文件,且不依賴微軟Office或其他第三方軟件。
安裝 Spire.XLS
Spire.XLS 提供了兩個版本,可以根據需求選擇合適的版本:
- 社區版:免費使用,但每個 .xls 文件限制為 200 行和 5 個工作表(.xlsx 文件沒有此限制)。安裝命令:
pip install spire.xls.free
- 商業版:功能完備,但會添加水印。可以在 [這里] 申請免費的測試許可證。
安裝命令:pip install spire.xls
安裝完成后,即可在Python應用程序中調用該庫的API。
使用 Python 刪除 Excel 表格中的行
刪除特定行
如果你已知需要刪除的行號,可以使用Worksheet.DeleteRow(rowIndex: int, rowCount: int) 方法,通過指定起始行號和刪除行數,直接移除一行或多行數據。這種方式適用于結構固定或需要批量刪除指定位置行的 Excel 表格。
實現步驟:
- 創建 Workbook 對象并加載 Excel 文件。
- 獲取目標工作表。
- 調用 DeleteRow() 方法刪除指定行。
- 保存修改后的文件。
實現代碼:
from spire.xls.common import *
from spire.xls import *# 創建 Workbook 對象
workbook = Workbook()
# 加載 Excel 文件
workbook.LoadFromFile("測試.xlsx")# 獲取第一個工作表
worksheet = workbook.Worksheets[0]# 從第 5 行開始刪除 2 行
worksheet.DeleteRow(5, 2)# 保存結果文件
workbook.SaveToFile("刪除特定行.xlsx", ExcelVersion.Version2016)
workbook.Dispose()
刪除空白行
在處理 Excel 表格時,空白行會影響數據的完整性和可讀性。使用 Worksheet.Rows[index].IsBlank 屬性,可以輕松判斷某一行是否為空。若返回值為 True,則說明該行為空白行,可使用 DeleteRow() 方法將其刪除。
實現步驟:
- 創建 Workbook 對象并加載 Excel 文件。
- 獲取目標工作表。
- 倒序遍歷所有行,使用 IsBlank 屬性判斷其是否為空。
- 對空白行調用 DeleteRow() 方法進行刪除。
- 保存修改后的 Excel 文件。
實現代碼:
from spire.xls import *
from spire.xls.common import *# 創建 Workbook 實例
workbook = Workbook()
# 加載 Excel 文件
workbook.LoadFromFile("測試.xlsx")
# 獲取第一個工作表
sheet = workbook.Worksheets[0]# 刪除空白行(倒序遍歷避免索引錯誤)
for i in range(sheet.Rows.Length - 1, -1, -1):if sheet.Rows[i].IsBlank:sheet.DeleteRow(i + 1)# 保存結果文件
workbook.SaveToFile("刪除空白行", ExcelVersion.Version2013)
workbook.Dispose()
刪除含指定數據的行
當需要刪除某些包含特定關鍵詞(如“已取消”、“無效”)的行時,可通過Worksheet.FindAll()方法查找關鍵詞所在的單元格并獲取其所在行,再使用DeleteRow()方法刪除這些行。
實現步驟:
- 創建 Workbook 對象并加載 Excel 文件。
- 獲取目標工作表。
- 使用 FindAll() 方法查找包含指定內容的所有單元格。
- 提取這些單元格所在的行索引,并去重。
- 倒序遍歷行索引并使用DeleteRow()方法逐行刪除。
- 保存處理后的文件。
實現代碼:
from spire.xls.common import *
from spire.xls import *# 創建 Workbook 對象
workbook = Workbook()
# 加載 Excel 文件
workbook.LoadFromFile("測試.xlsx")# 獲取第一個工作表
worksheet = workbook.Worksheets[0]# 查找包含特定值的單元格
ranges = worksheet.FindAll("已取消", FindType.Text, ExcelFindOptions.MatchEntireCellContent)
# 存儲行索引
row_indexes = []# 遍歷查找到的單元格
for range in ranges:row_index = range.Rowif 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)# 保存結果文件
workbook.SaveToFile("刪除含特定數據的行.xlsx", ExcelVersion.Version2016)
workbook.Dispose()
使用 Python 刪除 Excel 表格中的列
刪除特定列
若已明確某些列不再需要,可通過使用Worksheet.DeleteColumn(columnIndex: int, columnCount: int) 方法,刪除一列或多列。
實現步驟:
- 創建 Workbook 對象并加載 Excel 文件。
- 獲取目標工作表。
- 使用 DeleteColumn() 方法,從工作表中刪除指定列。
- 保存修改后的文件。
實現代碼:
from spire.xls.common import *
from spire.xls import *# 創建 Workbook 對象
workbook = Workbook()
# 加載 Excel 文件
workbook.LoadFromFile("測試.xlsx")# 獲取第一個工作表
worksheet = workbook.Worksheets[0]# 從第 3 列開始刪除 2 列
worksheet.DeleteColumn(3, 2)# 保存結果文件
workbook.SaveToFile("刪除特定列.xlsx", ExcelVersion.Version2016)
workbook.Dispose()
刪除空白列
空白列在 Excel 表格中同樣會造成數據干擾。使用 Worksheet.Columns[index].IsBlank 屬性可以檢測列是否為空,若返回值為 True,即可調用 DeleteColumn() 方法刪除該列。
實現步驟:
- 創建 Workbook 對象并加載 Excel 文件。
- 獲取目標工作表。
- 倒序遍歷所有列,使用IsBlank屬性判斷其是否為空。
- 若為空,則調用 DeleteColumn() 方法進行刪除。
- 保存修改后的文件。
實現代碼:
from spire.xls import *
from spire.xls.common import *# 創建 Workbook 實例
workbook = Workbook()
# 加載 Excel 文件
workbook.LoadFromFile("測試.xlsx")
# 獲取第一個工作表
sheet = workbook.Worksheets[0]# 刪除空白列(倒序遍歷避免索引混亂)
for i in range(sheet.Columns.Length - 1, -1, -1):if sheet.Columns[i].IsBlank:sheet.DeleteColumn(i + 1)# 保存結果文件
workbook.SaveToFile("刪除空白列.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
刪除含指定數據的列
如果你需要刪除包含某個特定值的整列數據,比如含有“測試”的列,可以使用Worksheet.FindAll()方法查找數據,獲取其所在單元格,獲取該單元格所在列,再調用 DeleteColumn() 方法刪除對應列。
實現步驟:
- 創建 Workbook 對象并加載 Excel 文件。
- 獲取目標工作表。
- 使用 FindAll() 方法查找包含指定文本的單元格;
- 提取這些單元格所在的列索引,并去重;
- 倒序遍歷列索引并使用DeleteColumn()方法逐列刪除;
- 保存文件。
實現代碼:
from spire.xls.common import *
from spire.xls import *# 創建 Workbook 對象
workbook = Workbook()
# 加載 Excel 文件
workbook.LoadFromFile("測試.xlsx")# 獲取第一個工作表
worksheet = workbook.Worksheets[0]# 查找包含指定值的單元格
ranges = worksheet.FindAll("測試", FindType.Text, ExcelFindOptions.MatchEntireCellContent)
# 存儲列索引
col_indexes = []# 遍歷查找到的單元格
for range in ranges:col_index = range.Columnif 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)# 保存結果文件
workbook.SaveToFile("刪除含指定數據的列.xlsx", ExcelVersion.Version2016)
workbook.Dispose()
使用 Python 刪除 Excel 中的單元格并自動移動剩余內容
刪除特定單元格
相較于整行整列的刪除,刪除單元格更常用于局部調整。例如在數據導入后,可能存在個別無效單元格需要清除,并將其他數據自動移位填充。
使用Worksheet.DeleteRange()方法,可以輕松移除不需要的單元格或單元格范圍,并指定剩余內容的移動方向,例如DeleteOption.MoveLeft,表示將剩余單元格內容向左移。
實現步驟:
- 創建 Workbook 對象并加載 Excel 文件。
- 獲取目標工作表。
- 獲取目標區域的單元格范圍。
- 調用 DeleteRange() 方法刪除該單元格范圍并設置剩余內容的移動方向;
- 保存修改后的文件。
實現代碼:
from spire.xls.common import *
from spire.xls import *# 創建 Workbook 對象
workbook = Workbook()
# 加載 Excel 文件
workbook.LoadFromFile("測試.xlsx")# 獲取第一個工作表
worksheet = workbook.Worksheets[0]# 通過指定起始行、起始列、結束行和結束列確定要刪除的單元格范圍(也可以使用范圍名稱如 "A2:B3")
range_to_delete = worksheet.Range[2, 1, 3, 2]# 刪除該區域,并將其右側單元格左移
worksheet.DeleteRange(range_to_delete, DeleteOption.MoveLeft)# 保存結果文件
workbook.SaveToFile("刪除特定單元格.xlsx", ExcelVersion.Version2016)
workbook.Dispose()
刪除空白單元格
空白單元格可能導致數據排列不整齊或計算錯誤。可以使用 Worksheet.Cells[index].IsBlank 屬性逐個檢測單元格是否為空,然后使用 DeleteRange() 刪除它并設置剩余數據的移動方向。
實現步驟:
- 創建 Workbook 對象并加載 Excel 文件。
- 獲取目標工作表。
- 遍歷工作表中的所有單元格。
- 使用IsBlank屬性判斷其是否為空。
- 若為空則使用 DeleteRange() 刪除它并設置其右側剩余數據的移動方向。
- 保存結果文件。
示例代碼:
from spire.xls import *
from spire.xls.common import *# 創建 Workbook 實例
workbook = Workbook()
# 加載 Excel 文件
workbook.LoadFromFile("測試.xlsx")
# 獲取第一個工作表
sheet = workbook.Worksheets[0]# 刪除空白單元格(倒序遍歷避免索引問題)
for i in range(sheet.Cells.Length - 1, -1, -1):if sheet.Cells[i].IsBlank:sheet.DeleteRange(sheet.Cells[i], DeleteOption.MoveLeft)# 保存結果文件
workbook.SaveToFile("刪除空白單元格.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
刪除含指定數據的單元格
如果需要刪除表格中包含特定內容的單元格,可以使用Workbook.FindAll()方法查找這些單元格,然后使用 DeleteRange() 刪除這些單元格并設置剩余數據的移動方向。
實現步驟:
- 創建 Workbook 對象并加載 Excel 文件。
- 獲取目標工作表。
- 使用 Workbook.FindAll() 方法查找包含指定內容的單元格。
- 遍歷這些單元格,調用 DeleteRange() 刪除它們并移動剩余內容。
- 保存修改后的文件。
實現代碼:
from spire.xls.common import *
from spire.xls import *# 創建 Workbook 對象
workbook = Workbook()
# 加載 Excel 文件
workbook.LoadFromFile("測試.xlsx")# 獲取第一個工作表
worksheet = workbook.Worksheets[0]# 查找包含指定值的所有單元格
ranges = worksheet.FindAll("測試", FindType.Text, ExcelFindOptions.MatchEntireCellContent)# 逐個刪除這些單元格,并將右側單元格左移
for range in ranges:worksheet.DeleteRange(range, DeleteOption.MoveLeft)# 保存結果文件
workbook.SaveToFile("刪除含特定數據的單元格.xlsx", ExcelVersion.Version2016)
workbook.Dispose()
以上就是使用 Python 和 Spire.XLS 刪除 Excel 文件中行、列和單元格的完整方法。如果你覺得這篇文章對你有所幫助,歡迎點贊、收藏或分享給有需要的朋友!!