如何使用Xlwings删除已筛选的行?
使用Xlwings删除Excel筛选后的行
首先修正你代码里的拼写错误:Criterial应该改为Criteria1,这是Excel API的参数规范。
以下是完整的实现代码,包含筛选+删除筛选行的逻辑:
import xlwings as xw filename = r"C:\Users\User\Xwlings\Input VAT_2021.12_rev.xlsx" wb = xw.Book(filename) sht = wb.sheets['Vendor_code'] # 执行筛选(修正参数拼写错误) sht.api.Range('A1:F1900').AutoFilter(Field:=3, Criteria1:='TATA') # 获取筛选后的可见单元格区域(排除表头行,从A2开始) filtered_visible_cells = sht.api.Range('A2:F1900').SpecialCells(12) # 12代表xlCellTypeVisible # 删除这些单元格所在的整行 filtered_visible_cells.EntireRow.Delete() # 关闭自动筛选状态 sht.api.AutoFilterMode = False # 按需保存并关闭工作簿 wb.save() wb.close()
关键说明:
SpecialCells(12):调用Excel原生API获取筛选后的所有可见单元格,12是xlCellTypeVisible的数值常量EntireRow.Delete():针对可见单元格对应的整行执行删除操作,确保筛选出的行被批量移除- 最后关闭筛选状态,避免表格残留筛选控件
内容的提问来源于stack exchange,提问作者Wan Seob Kim
相关产品推荐
相关产品推荐

