使用Python删除Excel中的指定行列

Written by

in

文章目录
  • 在 Python 生态中,处理 Excel 的主流库包括 pandas 和 openpyxl,与它们相比 Free Spire.XLS 具有以下优势: 无需依赖 Office,独立运行,跨平台兼容 支持多格式, .xls、.xlsx、.csv 全覆盖 保留原始样式,删除操作后不影响表格样式
  • 目录
    • 一、Free Spire.XLS:轻量级 Excel 操作库
    • 二、具体操作:删除行与列的完整流程
      • 1. 安装免费库
      • 2. 删除指定行
      • 3. 删除指定列
    • 三、方法补充
      • 使用 Python 删除 Excel 表格中的行
      • 使用 Python 删除 Excel 表格中的列

    在日常数据处理中,我们经常需要对 Excel 文件进行编辑,其中删除不必要的行和列是常见操作。本文将介绍如何使用免费库 Free Spire.XLS for Python 来高效删除 Excel 中的行和列,帮助你简化数据处理流程。

    在 Python 生态中,处理 Excel 的主流库包括 pandasopenpyxl,与它们相比 Free Spire.XLS 具有以下优势:

    • 无需依赖 Office,独立运行,跨平台兼容
    • 支持多格式, .xls.xlsx.csv 全覆盖
    • 保留原始样式,删除操作后不影响表格样式

    通过 pip 安装(注意:有篇幅限制):

    pip install Spire.Xls.Free
    

    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)

    # 继续使用上文的 workbook 对象  
    worksheet.DeleteColumn(1)  # 删除第1列
    workbook.SaveToFile("output.xlsx")  
    

    注意事项:

    • 删除列后,表格宽度自动缩减
    • 若需删除多列,优先删除靠右的列以避免索引错位

    删除特定行

    如果你已知需要删除的行号,可以使用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()

    删除特定列

    若已明确某些列不再需要,可通过使用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指定行列内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

    您可能感兴趣的文章:

    • Python轻松实现删除Excel工作表中的空白行列
    • 使用Python删除Excel中的行列和单元格示例详解
    • Python保留数据并删除Excel单元格的函数和公式
    • Python按条件删除Excel表格数据的方法(示例详解)
    • 使用Python操作Excel中图片的基础示例(插入、替换、提取、删除)
    • 利用Python自动化识别与删除Excel表格空白行和列
    • Python+Xlwings 删除Excel的行和列
    • Python操作Excel插入删除行的方法

    站内搜索