为 Excel 工作簿和工作表设置密码保护【Python教程】

在整理重要数据、制作模板或多人协作编辑 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()

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

有些表格并不需要完全禁止编辑。例如,表格中的固定数据需要保护,但又需要让用户填写姓名、联系方式或其他信息。这时,可以先使用 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()

3.3 解除 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 文件的权限管理更加高效、灵活。

posted @ 2026-09-04 18:08  E-iceblue  阅读(5)  评论(0)    收藏  举报