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单元格内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Anaconda环境变量的配置图文详解

    Anaconda环境变量的配置图文详解

    Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项,下面这篇文章主要给大家介绍了关于Anaconda环境变量配置的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • 一文带你掌握Python中textwrap库文本包装的艺术

    一文带你掌握Python中textwrap库文本包装的艺术

    在Python编程中,处理文本是一项基础且常见的任务,textwrap模块正是为此而生,它提供了一系列简单而强大的工具,帮助我们优雅地完成文本包装和格式化工作,下面就跟随小编来看看它的具体使用吧
    2024-12-12
  • PyTorch基础之torch.nn.Conv2d中自定义权重问题

    PyTorch基础之torch.nn.Conv2d中自定义权重问题

    这篇文章主要介绍了PyTorch基础之torch.nn.Conv2d中自定义权重问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • 详解Python如何实现批量为PDF添加水印

    详解Python如何实现批量为PDF添加水印

    我们有时候需要把一些机密文件发给多个客户,为了避免客户泄露文件,会在机密文件中添加水印。本文将利用Python实现批量为PDF添加水印,需要的可以参考一下
    2022-05-05
  • 利用Python代码实现一键抠背景功能

    利用Python代码实现一键抠背景功能

    这篇文章主要给大家介绍了关于如何利用Python代码实现一键抠背景的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • Python实现Word文档中提取表格数据并转换为CSV和JSON格式

    Python实现Word文档中提取表格数据并转换为CSV和JSON格式

    在日常工作中,我们经常需要处理大量的Word文档,其中包含各种表格数据,手动整理这些表格不仅耗时且容易出错,Python提供了多个库来帮助我们实现这一目标,所以本文给大家介绍了Python实现Word文档中提取表格数据并转换为CSV和JSON格式,需要的朋友可以参考下
    2025-12-12
  • YOLOv5构建安全帽检测和识别系统使用详解

    YOLOv5构建安全帽检测和识别系统使用详解

    这篇文章主要为大家介绍了YOLOv5构建安全帽检测和识别系统使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Keras搭建M2Det目标检测平台示例

    Keras搭建M2Det目标检测平台示例

    这篇文章主要为大家介绍了Keras搭建M2Det目标检测平台实现的源码示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • 使用Python制作一个备忘录工具

    使用Python制作一个备忘录工具

    这篇文章主要为大家详细介绍了如何使用Python开发一个简单而功能强大的备忘录应用,以及提供详细的示例代码,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • Python linecache.getline()读取文件中特定一行的脚本

    Python linecache.getline()读取文件中特定一行的脚本

    Python中使用标准库中的linecache中的getline方法可以从某个文件中读取出特定的一行。
    2008-09-09

最新评论