Python实现锁定指定Excel单元格区域

 更新时间:2026年05月08日 14:00:02   作者:咕白m625  
本文将演示如何使用 Python 实现 Excel 指定单元格区域锁定,公式单元格隐藏保护,工作表密码防护,多工作表批量锁定与解除保护,所有代码示例可直接复用至自动化业务脚本,感兴趣的小伙伴可以了解下

前言

在报表自动化、业务数据防护、批量台账生成等后端开发场景中,经常需要对 Excel 表头、固定配置区域、公式计算单元格进行锁定保护,防止人为误编辑与数据篡改。

本文将演示如何使用 Python 实现 Excel 指定单元格区域锁定、公式单元格隐藏保护、工作表密码防护、多工作表批量锁定与解除保护,所有代码示例可直接复用至自动化业务脚本。

一、环境配置

1. 免费库安装

pip install Spire.Xls.Free

2. 模块导入

from spire.xls import *
from spire.xls.common import *

二、Excel 单元格锁定核心原理

Excel 单元格锁定并非单独设置属性即可生效,依赖一套固定逻辑机制:

  1. Excel 所有单元格默认 Locked 属性为开启状态,但未启用工作表保护时,仍可自由编辑;
  2. 想要精准锁定指定区域,需先全局解锁整张工作表,再单独对目标单元格设置锁定;
  3. 配置完成后启用工作表保护并设置访问密码,锁定规则才会正式生效。

标准开发流程:

  1. 全局解锁工作表全部单元格;
  2. 对需要保护的单元格、行、列或自定义区域开启锁定;
  3. 设置工作表保护密码;
  4. 保存文件并主动释放资源。

三、实战代码示例

下文所有示例统一使用保护密码 Admin@2025,可根据业务场景自行替换。

示例1:锁定指定单元格区域,保留其余区域可编辑

常用于锁定报表表头、固定参数列,开放业务数据行编辑权限。

from spire.xls import *
from spire.xls.common import *

# 加载Excel文件
workbook = Workbook()
workbook.LoadFromFile("demo.xlsx")
worksheet = workbook.Worksheets[0]

# 全局解锁所有单元格(核心)
worksheet.Range.Style.Locked = False

# 锁定指定区域(支持单元格、行列、区域)
# 示例1:锁定单个单元格 A1
worksheet.Range["A1"].Style.Locked = True
# 示例2:锁定区域 A1:C5
worksheet.Range["A1:C5"].Style.Locked = True
# 示例3:锁定第1行(表头)
worksheet.Rows[0].Style.Locked = True
# 示例4:锁定A列(固定字段)
worksheet.Columns[0].Style.Locked = True

# 设置工作表密码保护
worksheet.Protect("Admin@2025")

# 保存文件并释放资源
workbook.SaveToFile("指定区域锁定.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

示例2:自动锁定公式单元格并隐藏公式内容

自动遍历表格已使用区域,识别含公式的单元格,完成锁定并隐藏公式,避免公式被篡改或随意查看。

from spire.xls import *
from spire.xls.common import *

workbook = Workbook()
workbook.LoadFromFile("demo.xlsx")
worksheet = workbook.Worksheets[0]

# 全局解锁
worksheet.Range.Style.Locked = False

# 遍历已使用单元格
used_range = worksheet.AllocatedRange
for cell in used_range:
    if cell.HasFormula:
        cell.Style.Locked = True
        cell.HideFormula = True

# 启用密码保护
worksheet.Protect("Admin@2025")

workbook.SaveToFile("公式单元格锁定.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

示例3:批量锁定工作簿所有工作表

批量对多工作表统一配置锁定区域与保护密码,适配多sheet 模板文件批量防护场景。

from spire.xls import *
from spire.xls.common import *

workbook = Workbook()
workbook.LoadFromFile("多工作表模板.xlsx")

# 遍历所有工作表统一配置
for sheet in workbook.Worksheets:
    sheet.Range.Style.Locked = False
    sheet.Range["A1:C5"].Style.Locked = True
    sheet.Protect("Admin@2025")

workbook.SaveToFile("批量工作表锁定.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

示例4:解除工作表密码保护

传入原有保护密码,撤销工作表锁定状态,恢复所有单元格可编辑。

from spire.xls import *
from spire.xls.common import *

workbook = Workbook()
workbook.LoadFromFile("指定区域锁定.xlsx")
worksheet = workbook.Worksheets[0]

# 输入原有密码解除保护
worksheet.Unprotect("Admin@2025")

workbook.SaveToFile("解除工作表保护.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

四、开发注意事项

  1. 单元格 Locked 属性仅做标记,必须启用工作表保护才会真正生效;
  2. 完成文件操作后务必调用 Dispose() 释放资源,防止进程常驻占用文件;
  3. 优先采用 xlsx 格式进行操作,老式 xls 格式在工作表保护特性上兼容性较弱;
  4. 程序运行环境无需安装 Office 或 WPS,可直接部署在服务器后台定时任务中;
  5. 解除工作表保护时,需传入与设置保护时一致的密码。

五、总结

本文结合实际开发场景,实现了 Excel 单元格指定区域锁定、公式隐藏保护、多工作表批量处理、密码保护与解锁等常用功能。遵循全局解锁、局部锁定、密码防护的标准逻辑,代码结构规范、可直接落地接入报表生成、数据导出、模板固化等自动化项目,适合作为 Python 操作 Excel 数据防护的通用解决方案。

到此这篇关于Python实现锁定指定Excel单元格区域的文章就介绍到这了,更多相关Python锁定Excel单元格内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python绘制牛奶冻曲线(高木曲线)案例

    Python绘制牛奶冻曲线(高木曲线)案例

    这篇文章主要介绍了Python绘制牛奶冻曲线(高木曲线)案例,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • Python中base64编码与解码详解

    Python中base64编码与解码详解

    本文主要介绍了Python2和Python3中使用base64加密方式的区别,Python3中字符为unicode编码,而b64encode函数的参数为byte类型,所以需要先进行转码
    2024-11-11
  • Window10上Tensorflow的安装(CPU和GPU版本)

    Window10上Tensorflow的安装(CPU和GPU版本)

    这篇文章主要介绍了Window10上Tensorflow的安装(CPU和GPU版本),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • django基于存储在前端的token用户认证解析

    django基于存储在前端的token用户认证解析

    这篇文章主要介绍了django基于存储在前端的token用户认证解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python检测两个文本文件相似性的三种方法

    Python检测两个文本文件相似性的三种方法

    检测两个文本文件的相似性是一个常见的任务,可以用于文本去重、抄袭检测等场景,Python 提供了多种方法来实现这一功能,x下面小编就来简单介绍一下吧
    2025-03-03
  • python tkinter制作用户登录界面的简单实现

    python tkinter制作用户登录界面的简单实现

    这篇文章主要介绍了python tkinter制作用户登录界面的简单实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Python find()、rfind()方法及作用

    Python find()、rfind()方法及作用

    这篇文章主要介绍了Python find()、rfind()方法,find方法的作用检索是否指定的字符串,如果存在返回首次出现该字符串的索引,如果不存在返回-1,rfind 方法的作用和find方法作用相同,本文结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • Python3打包exe代码2种方法实例解析

    Python3打包exe代码2种方法实例解析

    这篇文章主要介绍了Python3打包exe代码2种方法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享

    python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享

    这篇文章主要介绍了python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享,一个不太会遇到的问题,需要的朋友可以参考下
    2014-07-07
  • 使用pandas的box_plot去除异常值

    使用pandas的box_plot去除异常值

    今天小编就为大家分享一篇使用pandas的box_plot去除异常值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12

最新评论