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

在openpyxl中锁定首列后,如何解锁列宽与行高调整权限?

解决方案

要实现锁定第一列同时允许用户调整列宽行高,得调整操作顺序和保护参数,具体步骤如下:

  1. 先解锁所有单元格
    Excel默认所有单元格都是锁定状态,所以第一步要把所有单元格的锁定状态关掉,这样后续只需要单独锁定第一列就行。

  2. 锁定第一列的所有单元格
    遍历第一列的每个单元格,把它们的锁定状态设为True。

  3. 开启工作表保护并放开调整权限
    开启工作表保护的同时,设置允许调整列宽和行高的参数,这样用户就能正常调整列宽行高,同时第一列保持锁定。

完整代码示例:

from openpyxl.styles import Protection

# 解锁所有单元格
for row in ws.iter_rows():
    for cell in row:
        cell.protection = Protection(locked=False)

# 锁定第一列的所有单元格
for row in ws.iter_rows(min_col=1, max_col=1):
    for cell in row:
        cell.protection = Protection(locked=True)

# 开启工作表保护,允许调整列宽和行高
ws.protection.sheet = True
# 允许调整列宽
ws.protection.allowColumnWidth = True
# 允许调整行高
ws.protection.allowRowHeight = True

# 可选:设置保护密码
# ws.protection.password = "your_password_here"

补充说明

  • 如果你的openpyxl版本较低(比如2.6.x及更早),没有allowColumnWidth和allowRowHeight参数,可以用allowFormattingColumns和allowFormattingRows替代,因为调整列宽行高属于格式设置范畴:
    ws.protection.allowFormattingColumns = True
    ws.protection.allowFormattingRows = True
    
  • 不要先开启工作表保护再设置单元格锁定,应该先调整好所有单元格的锁定状态,最后再开启保护,避免设置不生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 04:05:26