如何使用Python openpyxl删除Excel第2行?代码报错求助
问题排查与解决:用openpyxl删除Excel第2行失败
我帮你看看这段代码的问题哈,其实有几个明显的小错误导致它跑不起来:
- 变量名不一致:你先定义了
sheet = wb.get_sheet_by_name("Sheet"),但后面却用了sheet_old1来操作单元格和删除行,这个变量根本没定义过,运行时会直接抛出NameError。 - 逻辑完全冗余且错误:你的目标是删除第2行,但却写了循环遍历所有行,还加了第一列是否为空的判断——这完全没必要,而且循环里删除行的操作还会导致行号混乱(删除行后后续行会上移),但你根本不需要这么复杂的逻辑。
- 使用了过时方法:
get_sheet_by_name在openpyxl的新版本里已经被弃用了,官方推荐直接用wb["工作表名称"]的方式获取工作表。
正确的实现方法
其实删除固定的第2行非常简单,不需要循环,直接定位工作表后调用delete_rows方法即可,代码如下:
import openpyxl # 加载目标Excel文件 wb = openpyxl.load_workbook("input1.xlsx") # 获取指定工作表(取代过时的get_sheet_by_name) sheet = wb["Sheet"] # 删除第2行,amount=1表示仅删除1行 sheet.delete_rows(2, amount=1) # 保存修改后的文件 wb.save("output.xlsx")
如果你的实际需求是删除第一列值为空的那一行(刚好是第2行),那可以调整逻辑,但从你的代码描述来看,你只是想删除固定的第2行,上面的代码就完全够用啦。
内容的提问来源于stack exchange,提问作者Gagan
相关产品推荐
相关产品推荐

