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

如何使用Python检测Excel文件中受密码保护的单元格?

检测Excel受保护单元格的实现方法

Excel的单元格保护不是单元格的独立属性,由工作表保护开关和单元格locked属性共同生效:默认所有单元格的locked属性为True,仅当工作表开启保护时,locked=True的单元格才会在Excel软件中被限制编辑。你之前使用openpyxl可以直接修改受保护单元格,是因为openpyxl本身不会强制执行Excel的编辑限制,仅读写文件内的配置属性。

具体实现代码(基于openpyxl)

import openpyxl

wb = openpyxl.load_workbook('test.xlsx')
sheet = wb['Sheet1']

# 检测指定单元格是否为受保护状态
def is_cell_protected(sheet, cell_coord):
    # 工作表未开启保护时,所有单元格都不受保护
    if not sheet.protection.sheet:
        return False
    cell = sheet[cell_coord]
    # 工作表开启保护时,locked为True的单元格是受保护状态
    return cell.protection.locked

# 测试B4单元格
print(f"B4是否受保护:{is_cell_protected(sheet, 'B4')}")

# 遍历获取当前工作表所有受保护的单元格
protected_cells = []
if sheet.protection.sheet:
    for row in sheet.iter_rows():
        for cell in row:
            if cell.protection.locked:
                protected_cells.append(cell.coordinate)

print(f"当前工作表受保护单元格列表:{protected_cells}")

特殊场景说明

如果你的工作表设置了「允许用户编辑范围」(即部分受保护区域可通过输入单独密码解锁编辑),可以通过sheet.protection.allowEditRanges属性读取所有自定义可编辑范围,再判断目标单元格是否属于这些范围,即可完成更精细的检测。

注意事项

pandas仅读取单元格数值内容,不会读取保护相关的元数据,因此无法通过pandas完成单元格保护状态检测,必须使用openpyxl、xlwings等支持读写Excel原生配置的库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:42:02