当前位置: 代码网 > it编程>前端脚本>Python > Python为Excel工作簿和工作表设置密码保护的教程详解

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

2026年09月05日 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设置密码保护内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com