惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
I
InfoQ
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 【当耐特】
小众软件
小众软件
B
Blog RSS Feed
大猫的无限游戏
大猫的无限游戏
博客园 - 三生石上(FineUI控件)
Engineering at Meta
Engineering at Meta
人人都是产品经理
人人都是产品经理
Microsoft Security Blog
Microsoft Security Blog
Last Week in AI
Last Week in AI
H
Help Net Security
爱范儿
爱范儿
云风的 BLOG
云风的 BLOG
博客园 - 司徒正美
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Microsoft Azure Blog
Microsoft Azure Blog
L
LangChain Blog
WordPress大学
WordPress大学
GbyAI
GbyAI
Google DeepMind News
Google DeepMind News
腾讯CDC

博客园 - E-iceblue

Excel 列转行/行列转换全指南:从 4 种常见解法到 Python 批量自动化 Python 实现 Excel 转 Markdown,支持工作表、单元格区域和批量处理 Python 实现 Markdown 转 Word、PDF:从转换到页面设置 PDF 无法复制文字怎么办?常见原因分析及解决方法 Python 办公自动化:将 PowerPoint (PPT/PPTX) 转换为 PDF 【全面指南】 使用 Python 在 Excel 中添加页眉页脚(文本/图片/奇偶页差异设置) 使用 Python 实现 PDF 到 HTML 的转换【含代码详解】 Python 拆分 Excel 文件:使用 Spire.XLS 实现按工作表、行、列和条件拆分 如何使用 Python 快速将 Excel 转换为 XML 文件 Python 办公自动化:Word 文档加密与权限控制实战 在 Python 中快速锁定 Excel 单元格与行列 使用 Python 在 Word 文档中添加或删除文本框 如何使 PDF 可编辑 - Python 教程详解 将 Excel 表格插入 Word 文档的三种实用方案(Python 自动化) Python 办公自动化:如何轻松调整 Word/PDF 页面大小为 Legal 尺寸 数字签名 vs 电子签名:区别与如何在文件中插入数字签名 Python 教程:快速复制 Excel 工作表 如何对比 Excel 两列数据的不同:从基础操作到 Python 自动化 如何提取 Word 文档中的表格并导出为 Excel(Python 教程) 使用 Python 在 PowerPoint 中添加或移除背景图和背景颜色 在 Java 中使用 Spire.PDF 合并 PDF 文档(含加密与压缩处理) 在 Python 中自动化转化 Markdown 为 HTML 【详细教程】 Python 控制 PDF 页面大小、页边距、页面方向与缩放 Python 办公自动化:快速将 HTML 转换为 PDF 格式 在 Python 中给 PDF 设置背景图或背景色 在 Python 中转换 XML 为 PDF 文档:基础转换与转换设置 在 Python 中对比 Word 文档:自动生成修订报告【教程向】 Excel 删除空白行的 5 种方法 【手动与 Python 自动化】 删除 Excel 表格中的重复行 【4 种实用方法】 从纯文本到精美文档:TXT 转 PDF 的三种高效方案
为 Excel 工作簿和工作表设置密码保护【Python教程】
E-iceblue · 2026-09-04 · via 博客园 - E-iceblue

在整理重要数据、制作模板或多人协作编辑 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 文件的权限管理更加高效、灵活。