使用openpyxl向已有Excel多工作表写入数据时出现异常
问题分析与修正方案
嘿,我一眼就瞅出你代码里的核心问题啦,咱们一步步捋清楚:
你代码里的几个关键问题:
- 工作表获取逻辑错误:
excel.active只会返回当前激活的工作表,第一次调用拿到Sheet1后,第二次再调用它还是Sheet1,并不会自动切换到Sheet2——所以你最后是把"abcd"写到了Sheet1的P7单元格,而非目标Sheet2,这就是写入异常的根源。 - 导入可以更规范:你导入了
Workbook但实际用的是load_workbook,虽然不会直接报错,但明确导入需要的模块能避免混淆。 - 冗余的保存操作:中间注释掉的
excel.save()完全没必要,最后统一保存一次就够啦。
修正后的代码:
# 明确导入需要的load_workbook方法 from openpyxl import load_workbook # 加载已存在的Excel文件,read_only=False是默认值,可省略 excel = load_workbook('pqr.xlsx') # 直接通过工作表名称精准获取Sheet1 sheet1 = excel['Sheet1'] sheet1['D4'] = 'qwerty' # 同样通过名称获取Sheet2 sheet2 = excel['Sheet2'] sheet2['P7'] = 'abcd' # 最后统一保存修改 excel.save('pqr.xlsx')
小补充:
如果不确定工作表的准确名称,可以用print(excel.sheetnames)打印出所有工作表的名称,避免因拼写错误导致问题。
内容的提问来源于stack exchange,提问作者Swanand
相关产品推荐
相关产品推荐

