使用Python openpyxl删除含当前月份单元格的Excel行 代码如何修正
Excel按当前月份删除整行代码修正方案
核心错误原因
- 类型匹配错误:你将
d.value.date()返回的完整日期对象,直接和整数类型的当前月份做比较,比较结果永远为False,所以首次运行无删除效果;反过来判断不等时结果永远为True,就会清空所有行。 - 变量引用错误:你定义的存储当前月份的变量名为
current_month,但判断条件中错误写为current.month,未定义的current变量直接导致判断逻辑完全失效。 - 冗余操作:日期类型单元格的
value本身就是datetime对象,不需要额外调用.date()方法,直接取.month属性即可获得对应月份的整数值。
修正后可运行代码
from openpyxl import load_workbook from datetime import date wb = load_workbook('file1.xlsx') ws = wb['Sheet1'] max_row = ws.max_row max_col = ws.max_column # 获取当前月份整数值 current_month = date.today().month # 倒序遍历行,避免删除行后索引偏移导致漏判 for row_num in range(max_row, 0, -1): for col_num in range(1, max_col + 1): current_cell = ws.cell(row=row_num, column=col_num) # 判定为当前月份的日期就删除整行 if current_cell.is_date and current_cell.value.month == current_month: ws.delete_rows(row_num) break wb.save("file2.xlsx")
内容的提问来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

