You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在openpyxl中删除指定单元格?解决坐标与参数类型适配问题

解决openpyxl通过单元格坐标删除行/列的问题

先纠正一个笔误:你写的ws.delte_row(index)应为ws.delete_rows(index)(拼写错误)。

两种可行实现方式:

1. 遍历单元格时直接获取行/列号(推荐)

你通过ws.iter_rows()拿到的cell对象本身就自带row(整数行号)和column(整数列号)属性,完全不用处理cell.coordinate这个字符串格式的坐标。比如要删除指定单元格所在的行:

from openpyxl import load_workbook

wb = load_workbook("你的文件.xlsx")
ws = wb.active

# 先收集要删除的行号,避免删除时行号偏移导致混乱
target_rows = set()
for row in ws.iter_rows():
    for cell in row:
        # 替换成你的判断条件,比如匹配指定坐标或单元格值
        if cell.coordinate == "A1":
            target_rows.add(cell.row)

# 倒序删除,防止行号变化漏删目标行
for row_num in sorted(target_rows, reverse=True):
    ws.delete_rows(row_num)

wb.save("修改后文件.xlsx")

2. 解析单元格坐标字符串

如果手里只有"A1"这类字符串格式的坐标,可使用openpyxl内置工具解析为整数索引:

from openpyxl.utils import column_index_from_string, coordinate_from_string
from openpyxl import load_workbook

wb = load_workbook("你的文件.xlsx")
ws = wb.active

# 解析坐标字符串
coord = "A1"
col_name, row_num = coordinate_from_string(coord)
col_num = column_index_from_string(col_name)

# 删除对应列或行
ws.delete_cols(col_num)  # 删除A列
ws.delete_rows(row_num)  # 删除第1行

wb.save("修改后文件.xlsx")

关键注意事项

删除行/列时必须倒序处理,如果正序删除(比如先删第2行,原第3行会自动变为新第2行),后续操作会漏掉原本的目标行/列。因此需要先收集所有待删除的索引,再按从大到小的顺序执行删除操作。

内容的提问来源于stack exchange,提问作者Mark Baumann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 01:46:33