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

使用xlwings读取受保护Excel单元格批注返回None的问题求助

解决xlwings读取加密Excel单元格批注返回None的问题

可能原因及解决方案

1. 混淆了Excel的两种批注类型

Excel存在两种批注形式:

  • 传统批注(Note):旧版Excel的批注样式,对应xlwings的note属性
  • 现代评论(Comment):新版Excel的评论功能,对应xlwings的comment属性

若你的单元格使用的是现代评论,调用note会返回None。修改代码,分别尝试读取两种类型:

import xlwings as xw

PATH = 'C:/Users/Hendo/Pictures/Sample.xlsx'
psw = '1234'
wb = xw.Book(PATH, password=psw)
sheet = wb.sheets['Sheet1']

# 优先读取现代评论
if sheet.range('H15').comment:
    print(sheet.range('H15').comment.text)
# 再读取传统批注
elif sheet.range('H15').note:
    print(sheet.range('H15').note.text)
else:
    print("该单元格无批注或评论")

2. 升级xlwings版本

旧版本xlwings对加密文件的批注读取可能存在兼容性问题,执行以下命令升级到最新版:

pip install --upgrade xlwings

3. 处理工作表保护

若目标工作表设置了保护密码,需先解除保护再读取批注:

import xlwings as xw

PATH = 'C:/Users/Hendo/Pictures/Sample.xlsx'
psw = '1234'
sheet_psw = '工作表保护密码'  # 替换为实际密码

wb = xw.Book(PATH, password=psw)
sheet = wb.sheets['Sheet1']

# 解除工作表保护
sheet.unprotect(password=sheet_psw)

# 读取批注
if sheet.range('H15').comment:
    print(sheet.range('H15').comment.text)
elif sheet.range('H15').note:
    print(sheet.range('H15').note.text)

内容的提问来源于stack exchange,提问作者Henrique Honorato Cruvinel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 18:02:36