You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python向已有Excel指定单元格写入值报AttributeError如何解决

问题原因

报错是因为混淆了openpyxl中Workbook(工作簿)和Worksheet(工作表)两个对象的属性:

  • .active是Workbook对象的内置属性,作用是返回工作簿打开时默认处于激活状态的工作表,Worksheet对象本身没有这个属性
  • 代码里已经通过workbook["new_sheet"]拿到了目标工作表的Worksheet实例ws4,再执行ws4.active就会触发你看到的属性错误

另外原代码还有两处冗余逻辑:

  • 导入pandas读文件的步骤没有参与后续任何修改操作,完全多余
  • 导入Workbook类是用来新建空白工作簿的,加载现有文件的场景不需要这个导入
修复后代码

直接删掉错误的.active调用和冗余代码即可,完整可运行代码如下:

from openpyxl import load_workbook

file_source = r'C:\Users\user\Desktop\Data.xlsx'
# 加载目标Excel文件
workbook = load_workbook(filename=file_source)
# 定位到名为new_sheet的工作表
ws = workbook["new_sheet"]
# 直接给D1单元格赋值
ws["D1"] = "Latest Price"
# 保存修改
workbook.save(filename=file_source)

运行效果参考:
操作示例截图

补充说明
  • 如果要操作的工作表是文件打开时默认激活的表,才需要用ws = workbook.active的写法,已知工作表名的情况下直接按表名索引更准确,不会因为用户上次打开文件时激活的表变化导致操作错工作表
  • 给单元格赋值时,工作表对象["单元格坐标"] = 值就是最直接的写法,拿到工作表对象后不需要额外执行"打开"操作

内容的提问来源于stack exchange,提问作者CanaryTheBird

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 06:36:26