在日常数据处理中,我们经常需要对 excel 文件进行编辑,其中删除不必要的行和列是常见操作。本文将介绍如何使用免费库 free spire.xls for python 来高效删除 excel 中的行和列,帮助你简化数据处理流程。
一、free spire.xls:轻量级 excel 操作库
在 python 生态中,处理 excel 的主流库包括 pandas 和 openpyxl,与它们相比 free spire.xls 具有以下优势:
- 无需依赖 office,独立运行,跨平台兼容
- 支持多格式,
.xls、.xlsx、.csv全覆盖 - 保留原始样式,删除操作后不影响表格样式
二、具体操作:删除行与列的完整流程
1. 安装免费库
通过 pip 安装(注意:有篇幅限制):
pip install spire.xls.free
2. 删除指定行
from spire.xls import *
from spire.xls.common import *
# 加载 excel
workbook = workbook()
workbook.loadfromfile("input.xlsx")
# 定位到第一个工作表
worksheet = workbook.worksheets[0]
# 删除第2行(索引从1开始)
worksheet.deleterow(2)
# 保存结果
workbook.savetofile("output.xlsx", fileformat.xlsx)
关键点:
- 删除后,后续行会自动上移,无需额外调整
- 支持删除多行:
deleterows(start_index, count)
3. 删除指定列
# 继续使用上文的 workbook 对象
worksheet.deletecolumn(1) # 删除第1列
workbook.savetofile("output.xlsx")
注意事项:
- 删除列后,表格宽度自动缩减
- 若需删除多列,优先删除靠右的列以避免索引错位
三、方法补充
使用 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.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)
# 保存结果文件
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.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)
# 保存结果文件
workbook.savetofile("删除含指定数据的列.xlsx", excelversion.version2016)
workbook.dispose()本文介绍了使用 free spire.xls for python 库删除 excel 中行和列的具体方法。该库提供了对应的 api,可实现单个行 / 列及多个连续行 / 列的删除操作,操作过程需遵循其索引规则及资源管理要求。
到此这篇关于使用python删除excel中的指定行列的文章就介绍到这了,更多相关python删除excel指定行列内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论