Python为Excel工作簿和工作表设置密码保护的教程详解

 更新时间:2026年09月05日 08:55:13   作者:E_ICEBLUE  
借助 Python,我们能够自动化批量完成对 Excel 文件的保护,本文将使用 Spire.XLS for Python,演示如何保护和解除保护 Excel 工作簿、工作表,以及如何设置工作表中的可编辑区域,希望对大家有所帮助

在整理重要数据、制作模板或多人协作编辑 Excel 文件时,有些内容并不适合直接开放修改。例如,工作簿中的工作表结构需要保持不变,已经整理好的数据不希望被误删,或者只希望其他人填写指定的单元格区域。此时,我们可以使用 Excel 的保护功能限制不必要的修改,同时保留必要的编辑权限。

借助 Python,我们能够自动化批量完成对 Excel 文件的保护。本文将使用 Spire.XLS for Python,演示如何保护和解除保护 Excel 工作簿、工作表,以及如何设置工作表中的可编辑区域。

环境准备

在 Python 中处理 Excel 文件时,推荐使用专门的文档处理库。在本文中,我们使用 Spire.XLS for Python,它支持 Excel 工作簿、工作表、单元格等常见内容的创建、编辑、转换、加密等,并且不依赖 Microsoft Excel。

安装 Spire.XLS for Python

你可以通过 pip 直接安装:

pip install Spire.XLS

安装完成后,在 Python 程序中导入相关模块:

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

该软件还提供免费版,主要用于小型项目或者测试。

通过 Python 保护 Excel 工作簿

工作簿保护主要用于限制 Excel 文件结构的修改。例如,不希望其他用户随意添加、删除、移动或重命名工作表时,可以对整个工作簿进行保护。

通过密码保护 Excel 工作簿

工作簿保护主要用于限制 Excel 文件结构的修改。例如,不希望其他用户随意添加、删除、移动或重命名工作表时,可以对整个工作簿进行保护。

在 Spire.XLS 中,我们主要使用 Workbook.Protect() 方法来设置工作簿保护密码。设置保护后,Excel 工作簿的结构修改会受到限制。

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

# 创建 Workbook 对象
workbook = Workbook()

# 加载 Excel 文件
workbook.LoadFromFile("示例文档.xlsx")

# 保护工作簿,设置密码
workbook.Protect("password-123")

# 保存保护后的文件
workbook.SaveToFile("保护工作簿.xlsx", ExcelVersion.Version2016)

workbook.Dispose()

注意: 工作簿保护主要针对工作簿结构,与 Excel 文件的打开密码并不是同一种保护机制。

在 Python 中解除 Excel 工作簿保护

如果后续需要重新调整工作簿结构,可以解除之前设置的保护。我们可以通过调用 UnProtect() 方法,快速解除对 Excel 工作簿的保护。

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

workbook = Workbook()

# 输入 Excel 工作簿的密码
workbook.OpenPassword = "password-123"

# 加载受保护的 Excel 文件
workbook.LoadFromFile("保护工作簿.xlsx")

# 解除保护
workbook.UnProtect()

# 保存解除保护后的文件
workbook.SaveToFile("解除保护工作簿.xlsx", ExcelVersion.Version2016)

workbook.Dispose()

在 Python 中使用密码保护 Excel 工作表

如果只需要限制某个工作表的编辑,可以单独保护这个工作表,从而避免影响其他工作表。这种方式适合包含多个工作表的 Excel 文件,例如只保护计算结果表,而保留其他页面的正常编辑权限。

通过密码保护 Excel 工作表

如果只需要限制某个工作表的编辑,可以单独对该工作表设置保护。例如,对于包含重要数据或计算结果的工作表,可以限制用户对其中内容的修改。

使用 Spire.XLS 保护工作表时,主要使用 Protect() 设置保护密码和保护权限。其中,SheetProtectionType 可以用于指定工作表允许执行的操作;我们可以使用 SheetProtectionType.none 表示不授予额外操作权限。

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

# 创建 Workbook 对象
workbook = Workbook()

# 加载 Excel 文件
workbook.LoadFromFile("示例文档.xlsx")

# 获取第一个工作表
worksheet = workbook.Worksheets[0]

# 保护工作表
worksheet.Protect("password-permission", SheetProtectionType.none)

# 保存保护后的文件
workbook.SaveToFile("保护工作表.xlsx", ExcelVersion.Version2016)

workbook.Dispose()

保护工作表并设置可编辑区域

有些表格并不需要完全禁止编辑。例如,表格中的固定数据需要保护,但又需要让用户填写姓名、联系方式或其他信息。这时,可以先使用 AddAllowEditRange() 为工作表设置允许编辑的区域,再通过 Protect() 保护整个工作表。这样,指定区域仍可以编辑,而其他区域则受到保护。

如果需要设置多个可编辑区域,可以重复调用 AddAllowEditRange(),分别指定区域名称和单元格范围。完成区域设置后,再使用 Protect() 设置工作表保护即可。

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

# 创建 Workbook 对象
workbook = Workbook()

# 加载 Excel 文件
workbook.LoadFromFile("示例文档.xlsx")

# 获取第一个工作表
sheet = workbook.Worksheets[0]

# 设置允许编辑的区域
sheet.AddAllowEditRange("范围一", sheet.Range["A2:A4"])
sheet.AddAllowEditRange("范围二", sheet.Range["A5:C6"])

# 保护工作表
sheet.Protect("password-permission", SheetProtectionType.All)

# 保存文件
workbook.SaveToFile("允许编辑范围.xlsx", ExcelVersion.Version2016)

workbook.Dispose()

解除 Excel 工作表保护

当受保护的工作表需要重新编辑时,可以使用 Unprotect() 解除保护。加载 Excel 文件后,获取需要解除保护的工作表,并调用 Unprotect(),同时传入设置保护时使用的密码。解除保护后,再将文件保存为新的 Excel 文档即可。

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

# 创建 Workbook 对象
workbook = Workbook()

# 加载受保护的 Excel 文件
workbook.LoadFromFile("保护工作表.xlsx")

# 获取第一个工作表
sheet = workbook.Worksheets[0]

# 解除工作表保护
sheet.Unprotect("password-permission")

# 保存解除保护后的文件
workbook.SaveToFile("解除保护工作表.xlsx", ExcelVersion.Version2016)

workbook.Dispose()

总结

Excel 文件中的不同内容往往有不同的保护需求,有时需要保护整个工作簿的结构,有时只需要限制某个工作表的编辑权限,还可以在保护数据的同时,为指定区域保留填写权限。通过 Python 自动设置这些保护规则,可以减少手动操作,尤其适合需要统一处理多个 Excel 文件的场景。借助 Spire.XLS for Python,开发者可以将这些保护操作集成到现有的数据处理流程中,让 Excel 文件的权限管理更加高效、灵活。

到此这篇关于Python为Excel工作簿和工作表设置密码保护的教程详解的文章就介绍到这了,更多相关Python Excel设置密码保护内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python爬虫开发之selenium模块详细使用方法与实例全解

    python爬虫开发之selenium模块详细使用方法与实例全解

    这篇文章主要介绍了python爬虫开发之selenium模块详细使用方法与实例全解,selenium模块详细在爬虫开发中主要用来解决JavaScript渲染问题需要的朋友可以参考下
    2020-03-03
  • Django之富文本(获取内容,设置内容方式)

    Django之富文本(获取内容,设置内容方式)

    这篇文章主要介绍了Django之富文本(获取内容,设置内容方式),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • 17个Python小技巧分享

    17个Python小技巧分享

    这篇文章主要给大家分享了17个Python小技巧,都是些基础的非常常用也非常实用的小技巧,这里推荐给大家。
    2015-01-01
  • requests库post方法如何传params类型的参数(最新推荐)

    requests库post方法如何传params类型的参数(最新推荐)

    在使用requests库的post方法时,params类型的参数用于在URL中作为查询字符串传递,与data或json参数不同,后者是放在请求体中的,params参数接受一个字典或包含键值对的序列,本文给大家介绍requests库post方法怎么传params类型的参数,感兴趣的朋友一起看看吧
    2025-03-03
  • python3.10及以上版本编译安装ssl模块的详细过程

    python3.10及以上版本编译安装ssl模块的详细过程

    最近搞安装ssl模块每天都弄到很晚,所以这里给大家整理下,这篇文章主要给大家介绍了关于python3.10及以上版本编译安装ssl模块的详细过程,文中介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • 用Pygal绘制直方图代码示例

    用Pygal绘制直方图代码示例

    这篇文章主要介绍了用Pygal绘制直方图代码示例,具有一定借鉴价值,需要的朋友可以了解下。
    2017-12-12
  • flask-script模块的具体使用

    flask-script模块的具体使用

    本文主要介绍了flask-script模块的具体使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • 浅谈Keras参数 input_shape、input_dim和input_length用法

    浅谈Keras参数 input_shape、input_dim和input_length用法

    这篇文章主要介绍了浅谈Keras参数 input_shape、input_dim和input_length用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • python 字符串常用方法汇总详解

    python 字符串常用方法汇总详解

    这篇文章主要介绍了python 字符串方法汇总详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • python中Celery 异步任务队列的高级用法

    python中Celery 异步任务队列的高级用法

    Celery 是一个高效且可扩展的任务队列框架,通过合理配置任务重试、分组工作流、优先级管理以及监控工具,可以显著提升系统的可靠性和性能,感兴趣的可以了解一下
    2025-09-09

最新评论