使用openpyxl给单元格赋值时触发Tuple TypeError错误求助
问题分析与解决
核心问题点
只读模式导致无法编辑
你使用read_only=True加载工作簿,该模式仅用于高效读取大文件,完全不支持写入操作,这是无法修改单元格的根本原因。工作表获取方式错误
wb.active返回的是单个激活工作表对象,你使用wb.active[1]会取该工作表的第1行,得到的是包含该行所有单元格的元组(tuple),所以ws实际是元组类型,自然无法执行单元格赋值操作。
修正后的代码
from openpyxl import load_workbook # 打开Excel文件:移除read_only=True,使用可编辑模式 wb = load_workbook(filename="myFile.xlsm", keep_vba=True, data_only=True) # 获取第二个工作表:worksheets是列表,索引从0开始 ws = wb.worksheets[1] # 修改指定单元格值 ws["B3"] = "Germany" # 保存修改后的文件 wb.save("myFile.xlsm")
补充说明
- 对于
.xlsm宏文件,keep_vba=True可保留宏代码,无需改动。 data_only=True会读取单元格的计算结果而非公式,若需保留公式可删除此参数。- 若要获取默认激活的工作表,直接使用
ws = wb.active即可;明确指定工作表时,用wb.worksheets[索引]更准确。
内容的提问来源于stack exchange,提问作者Hendrik
相关产品推荐
相关产品推荐

