使用Python的openpyxl处理Excel表格循环时遇类型错误问题
解决openpyxl循环处理Excel时的TypeError问题
错误原因
出现TypeError: 'tuple' object is not callable的核心原因有两种:
- 误将工作表的
max_row属性当作方法调用(加了括号()),比如写成wb_sheet.max_row()而非wb_sheet.max_row - 代码中自定义了名为
max_row的元组变量,覆盖了openpyxl工作表对象的原生属性
从错误信息里的wb_sheet.max_row+1来看,最可能的情况是你在实际代码中错误给max_row加了括号,导致试图调用一个元组对象,触发报错。
修正后的完整代码
from openpyxl import load_workbook # 加载目标Excel文件,注意路径正确性,当前目录直接写文件名即可 book_stock = load_workbook(r'file.xlsx') sheet_stock = book_stock.active # 从第2行开始遍历到最后一行,设置第4列的单元格格式为日期格式 for row in range(2, sheet_stock.max_row + 1): sheet_stock.cell(row=row, column=4).number_format = 'dd/mm/yyyy' # 务必保存修改,否则所有更改不会写入文件 book_stock.save('updated_book_stock.xlsx')
关键注意点
- 路径修正:原代码中的
r'\file.xlsx'指向系统根目录,若文件在当前工作目录,直接使用r'file.xlsx';如需指定绝对路径,用r'C:\your_full_path\file.xlsx' - 属性调用:
max_row是工作表的属性,不是方法,调用时不要加括号() - 变量名冲突:检查代码中是否存在
max_row = (...)这类定义元组的语句,避免覆盖原生属性 - 保存文件:修改完成后必须调用
save()方法,指定保存路径和文件名
内容的提问来源于stack exchange,提问作者Samir ZAABLI
相关产品推荐
相关产品推荐

