如何使用 Python 删除 Excel 中的行、列和单元格 – 详解

目录

开发环境准备

使用 Python 删除 Excel 表格中的行

删除特定行

删除空白行

删除含指定数据的行

使用 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 文件中行、列和单元格的完整方法。如果你觉得这篇文章对你有所帮助,欢迎点赞、收藏或分享给有需要的朋友!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/914387.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/914387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

箭头函数(Arrow Functions)和普通函数(Regular Functions)

在 JavaScript 中,箭头函数(Arrow Functions)和普通函数(Regular Functions)有以下主要区别:1. 语法箭头函数:使用 > 语法,更简洁,可省略 function 和 return&#xf…

Spring Boot 配置注解处理器 - spring-boot-configuration-processor

前言 在 Spring Boot 开发中,配置属性的管理是构建企业级应用的核心环节。Spring Boot 通过 ConfigurationProperties 注解提供了一种类型安全的方式,将配置文件中的属性绑定到 Java 对象中。然而,开发者在使用过程中常会遇到配置属性无自动补…

java: DDD using oracle 21c

项目结构:domain:/*** encoding: utf-8* 版权所有 2025 ©涂聚文有限公司 * 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎* 描述:* Author : geovindu,Geovin Du 涂聚文.* IDE : IntelliJ IDEA 2024…

两张图片对比clip功能

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>图片拖动Clip对比功能</title><style&g…

7.11 dp 图

lcr148.栈按放入顺序推栈&#xff0c;能弹出的就及时弹出&#xff0c;最后栈空则符合要求。判断 takeOut 序列是否符合栈的操作逻辑&#xff0c;因为题目中“特殊的数据结构”其实就是栈&#xff08;先进后出&#xff09;。思路如下&#xff1a;1. 用一个栈来模拟图书放入的过程…

react16-react19都更新哪些内容?

React 16 到 React 19 是 React 发展非常关键的阶段&#xff0c;每个版本都带来了深远影响。以下是 React 16 → 19 的重要更新列表&#xff0c;按版本详细说明每一代的核心特性、重要变化、对开发者的意义&#xff0c;并附简评&#xff1a;✅ React 16&#xff08;2017 年&…

【AI大模型】RAG系统组件:向量数据库(ChromaDB)

RAG 系统中的关键组件&#xff1a;向量数据库&#xff08;Vector Database&#xff09;&#xff0c;并以 ChromaDB 为例进行说明。什么是向量数据库&#xff1f;核心概念&#xff1a; 向量数据库是一种专门设计用于高效存储、索引和检索高维向量的数据库。向量是什么&#xff1…

006_测试评估与安全实践

测试评估与安全实践 目录 建立成功标准评估方法测试策略安全最佳实践隐私保护性能监控 建立成功标准 定义原则 1. 具体明确 清晰定义精确目标避免模糊表述如"良好性能"制定可操作的标准 不好的标准&#xff1a; 模型应该表现良好好的标准&#xff1a; 情感分…

时序预测 | Pytorch实现CNN-KAN电力负荷时间序列预测模型

预测效果 代码功能 该代码实现了一个结合卷积神经网络&#xff08;CNN&#xff09;和Kolmogorov–Arnold网络&#xff08;KAN&#xff09;的混合模型&#xff08;CNN-KAN&#xff09;&#xff0c;用于时间序列预测任务。核心功能包括&#xff1a; 数据加载与预处理&#xff1…

UI前端与数字孪生结合实践探索:智慧物流的仓储优化与管理系统

hello宝子们...我们是艾斯视觉擅长ui设计和前端数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩!一、引言&#xff1a;仓储管理的 “数字孪生革命”传统物流仓储正面临 “效率瓶颈、可视化差、响应滞…

【Android】在平板上实现Rs485的数据通讯

前言 在工业控制领域&#xff0c;Android 设备通过 RS485 接口与 PLC&#xff08;可编程逻辑控制器&#xff09;通信是一种常见的技术方案。最近在实现一个项目需要和plc使用485进行通讯&#xff0c;记录下实现的方式。 我这边使用的从平的Android平板&#xff0c;从平里面已经…

MySQL技术笔记-备份与恢复完全指南

目录 前言 一、备份概述 &#xff08;一&#xff09;备份方式 &#xff08;二&#xff09;备份策略 二、物理备份及恢复 &#xff08;一&#xff09;备份操作 &#xff08;二&#xff09;恢复操作 三、逻辑备份及恢复 &#xff08;一&#xff09;逻辑备份 &#xff0…

SpringBoot或OpenFeign中 Jackson 配置参数名蛇形、小驼峰、大驼峰、自定义命名

SpringBoot或OpenFeign中 Jackson 配置参数名蛇形、小驼峰、大驼峰、自定义命名 前言 在调用外部接口时&#xff0c;对方给出的接口文档中&#xff0c;入参参数名一会大写加下划线&#xff0c;一会又是驼峰命名。 示例如下&#xff1a; {"MOF_DIV_CODE": "xx…

uni-app 途径站点组件开发与实现分享

在移动应用开发中&#xff0c;涉及到出行、物流等场景时&#xff0c;途径站点的展示是一个常见的需求。本文将为大家分享一个基于 uni-app 开发的途径站点组件&#xff0c;该组件能够清晰展示路线中的各个站点信息&#xff0c;包括站点名称、到达时间、是否已到达等状态&#x…

kotlin中集合的用法

从一个实际应用看起以下kotlin中代码语法正确吗 var testBeanAIP0200()var testList:List<AIP0200> ArrayList()testList.add(testBean)这段Kotlin代码存在语法错误&#xff0c;主要问题在于&#xff1a;List<AIP0200> 是Kotlin中的不可变集合接口&#xff0c;不能…

深入理解 Java Map 与 Set

文章目录前言1. 搜索树1.1 什么是搜索树1.2 查找1.3 插入1.4 删除情况一&#xff1a;cur 没有子节点&#xff08;即为叶子节点&#xff09;情况二&#xff1a;cur 只有一个子节点&#xff08;只有左子树或右子树&#xff09;情况三&#xff1a;cur 有两个子节点&#xff08;左右…

excel如何只保留前几行

方法一&#xff1a;手动删除多余行 选中你想保留的最后一行的下一行&#xff08;比如你只保留前10行&#xff0c;那选第11行&#xff09;。按住 Shift Ctrl ↓&#xff08;Windows&#xff09;或 Shift Command ↓&#xff08;Mac&#xff09;&#xff0c;选中从第11行到最…

实时连接,精准监控:风丘科技数据远程显示方案提升试验车队管理效率

风丘科技推出的数据远程实时显示方案更好地满足了客户对于试验车队远程实时监控的需求&#xff0c;并真正实现了试验车队的远程管理。随着新的数据记录仪软件IPEmotion RT和相应的跨平台显示解决方案的引入&#xff0c;让我们的客户端不仅可在线访问记录器系统状态&#xff0c;…

灰盒级SOA测试工具Parasoft SOAtest重新定义端到端测试

还在为脆弱的测试环境、强外部依赖和低效的测试复用拖慢交付而头疼&#xff1f;尤其在银行、医疗、制造等关键领域&#xff0c;传统的端到端测试常因环境不稳、接口难模拟、用例难共享而举步维艰。 灰盒级SOA测试工具Parasoft SOAtest以可视化编排简化复杂测试流程&#xff0c…

OKHttp 核心知识点详解

OKHttp 核心知识点详解 一、基本概念与架构 1. OKHttp 简介 类型&#xff1a;高效的HTTP客户端特点&#xff1a; 支持HTTP/2和SPDY&#xff08;多路复用&#xff09;连接池减少请求延迟透明的GZIP压缩响应缓存自动恢复网络故障2. 核心组件组件功能OkHttpClient客户端入口&#…